小程序使用weapp-qrcode.js生成二维码并存参数,扫码再获取参数时,JSON.parse()报错问题

最近小程序开发时候有这样一个需求,需要通过生成二维码,将一堆参数包含在二维码里。 二维码是使用weapp-qrcode.js生成的。参数是通过JSON.stringify()一个json对象存进去的。以上的操作都没有问题。

就在通过微信api wx.scancode扫码获取参数的时候,拿到当初存进去的json字符串,然后JOSN.parse()解析的时候出现了问题。

正常的操作
小程序使用weapp-qrcode.js生成二维码并存参数,扫码再获取参数时,JSON.parse()报错问题_第1张图片
但是这样会报错
小程序使用weapp-qrcode.js生成二维码并存参数,扫码再获取参数时,JSON.parse()报错问题_第2张图片
一般这种情况的报错就是说解析的不是一个正确的json字符串,但是看到我打印出来的内容 就是一个正常的json字符串。这就尴尬了


这里想了两种可以:
1、存进二维码的数据不能像存本地存储那样存,要通过转义再存储;
2、在生成二维码的同时,weapp-qrcode.js插件改变了数据结构;

然后我通过一一验证,都否定了以上的两种可能。此处暂时无解一段时间…


最后我一点点调试,我把打印出来的参数写一份到变量resultStr中,进行解析
小程序使用weapp-qrcode.js生成二维码并存参数,扫码再获取参数时,JSON.parse()报错问题_第3张图片
小程序使用weapp-qrcode.js生成二维码并存参数,扫码再获取参数时,JSON.parse()报错问题_第4张图片
这样操作是解析成功的。


那么问题就来了,为什么同样的数据,却一个可以一个不行呢?

刚刚是通过手写的 这次我直接复制打印出来的参数。这就发现了问题的所在
小程序使用weapp-qrcode.js生成二维码并存参数,扫码再获取参数时,JSON.parse()报错问题_第5张图片
这里发现花括号前多了一个非法字符,这就是导致解析失败的原因!

最后我用substr(1)的方法,去掉第一个非法字符,最终解析成功了!真的是很坑,至于为什么会有这样的一个字符,我也没

搞懂,估计是weapp-qrcode.js插件有哪一步会影响到参数结构。


百度了很久 没有发现有这样的问题发生,特此记录一番,好让大家不再踩坑。



更多情感与趣味前端内容,请关注我,我们一起学习交流

你可能感兴趣的:(前端,小程序,小程序扫码,生成二维码,JSON.parse,weapp-qrcode)