Skip to content

微信小程序之页面跳转传参数据: JSON 字符串转对象报错

工作中遇到了这个问题,之前也有遇到过,只是没有去研究这个问题,接下来简单说明一下。

(一)问题详情

我们在小程序的A页面向B页面跳转的时候,传了页面参数为param(页面参数值只能是字符串,参数值是根据用户点击的信息而不同的),所以传数组或对象需要使用JSON.stringify()转换,到了B页面需要将param获取到并通过JSON.parse()解析,结果问题是有些传过来json正常解析,有些则报这个错:

也就是说B页面获取到的参数param值格式不是json格式,但是我是通过JSON.stringify()做数据转换的,格式有问题A页面跳转就会报错了,所以是参数传输过程微信小程序官方工具做了处理。

(二)问题原因

查了一下,可以正确从A页面跳转到B页面带参数正常显示的,和不正常显示的控制台输出对比一下,发现原来是这个原因造成的。-_-

1、json解析正常页面获取到的数据格式是完整的:

2、json解析错误不正常页面显示获取到的数据是不完整的:

总结: 由于页面传输的数据太大,导致部分传输的数据内容被截断,导致json格式解析报错,微信官方是有限制页面跳转参数数据大小的,本人忘记了,知道的欢迎留言哈。

(三)解决方法

1、通过A页面设置缓存数据到B页面获取缓存到的数据格式来传输,不过不推荐,因为缓存数据大小也是有限制的,不适合大数据格式的缓存,小数据是可以的。 2、通过A页面传一个id到B页面,然后再重新请求接口获取新数据。 3、可以通过将A页面需要传的数据赋值给全局变量app.js中的全局变量,然后B页面getApp()获取全局变量就可以了(推荐,经常用)。