微信小程序-真机测试后台返回数据与开发工具显示不一致

本文介绍了一种在Android平台上处理JSON解析失败的方法。通过去除JSON数据前后的空白字符,并检查是否存在UTF-8 with BOM的问题,可以有效解决JSON.parse转换错误的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
开发工具上从后台获取JSON数据正常显示,但是Android真机(也只在安卓上测试)上测试后台数据返回正常,但是无法显示数据,提示JSON.parse转换错误。
成功的解决方案:
前端代码获取JSON数据后,将JSON数据去空格处理一下。
代码演示:

 wx.request({
               url:url,
                data,
                dataType:'JSON',
                method:'get',
                header:{'content-type':'application/json'},
                success: function (res) {
                    console.log("后台访问" + url + "结束,返回数据:", res.data||"空" )
                    var result = [];
                  res.data= res.data.trim();
                   if( /{/.test(res.data)){//判断返回的是对象 
                        res.data = JSON.parse(res.data);//字符串转换为对象
                    }
                    //使用数据----自己写其他代码了
        });

解决原理:
官方解释:近日有发现类似问题的都是因为返回的数据是 UTF-8 with BOM(即数据的开头是一个不可见字符 unicode 65279),Android 平台没有自动过滤,导致 JSON.parse 失败。目前需要开发者自行兼容,下个版本 Android 会过滤此字符。

总结:
感谢 https://blog.csdn.net/qq_27187991/article/details/69664247/ 博客的作者解决了这个困惑自己已久的问题。其实自己看了好几遍这篇博客但是直到现在我才看到我想要的答案,可以说这个博客的内容真太多了,无从下手,所以不才把这个问题解决方案重新整理,希望对各百度人群遇到这样的问题能从我这篇文章立马获得答案。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值