最近小程序开发时候有这样一个需求,需要通过生成二维码,将一堆参数包含在二维码里。 二维码是使用weapp-qrcode.js生成的。参数是通过JSON.stringify()一个json对象存进去的。以上的操作都没有问题。
就在通过微信api wx.scancode扫码获取参数的时候,拿到当初存进去的json字符串,然后JOSN.parse()解析的时候出现了问题。
正常的操作
但是这样会报错
一般这种情况的报错就是说解析的不是一个正确的json字符串,但是看到我打印出来的内容 就是一个正常的json字符串。这就尴尬了
这里想了两种可以:
1、存进二维码的数据不能像存本地存储那样存,要通过转义再存储;
2、在生成二维码的同时,weapp-qrcode.js插件改变了数据结构;
然后我通过一一验证,都否定了以上的两种可能。此处暂时无解一段时间…
最后我一点点调试,我把打印出来的参数写一份到变量resultStr中,进行解析
这样操作是解析成功的。
那么问题就来了,为什么同样的数据,却一个可以一个不行呢?
刚刚是通过手写的 这次我直接复制打印出来的参数。这就发现了问题的所在
这里发现花括号前多了一个非法字符,这就是导致解析失败的原因!
最后我用substr(1)的方法,去掉第一个非法字符,最终解析成功了!真的是很坑,至于为什么会有这样的一个字符,我也没
搞懂,估计是weapp-qrcode.js插件有哪一步会影响到参数结构。
百度了很久 没有发现有这样的问题发生,特此记录一番,好让大家不再踩坑。
更多情感与趣味前端内容,请关注我,我们一起学习交流