问题描述:
开发工具上从后台获取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/ 博客的作者解决了这个困惑自己已久的问题。其实自己看了好几遍这篇博客但是直到现在我才看到我想要的答案,可以说这个博客的内容真太多了,无从下手,所以不才把这个问题解决方案重新整理,希望对各百度人群遇到这样的问题能从我这篇文章立马获得答案。