微信小程序 后端返回数据为字符串怎么解析为json格式呢?
在微信小程序中,用wx.uploadFile{}上传服务器文件,成功后返回的是没有转码的json数据格式,而且是字符串类型。想要判断返回的数据这时候需要把之转换为对象,直接用JSON.prase(string)会报错,所以就总结了一下自己实现的方法。
1、首先说一个错误的方法:使用eval()
在浏览器控制台测试没问题就直接复制到了项目中,下午整理代码测试的时候发现出错了。
错误提示: TypeError: eval id not funtion
主要原因是微信小程序不支持 eval 这个方法,所以肯定不能使用这个了,那么就要另辟蹊径了,下面就整理一份可行的方案, 亲测可用。
2、正确的方案
wx.uploadFile({ url: 'API', //上传的路径 filePath: tempFilePaths, //刚刚在data保存的文件路径 name: 'file', //后台获取的凭据 formData:{ "userId": 1, "fileName": filename }, success(res) { console.log(res.data) let str = res.data let str1 = str.replace(/\ufeff/g,"") // step1: 首先去掉两头的"", let data = JSON.parse(str1) // step2: 转换成JSON格式的数据 if(data.code != "00000"){ _that.$uniApi.tipMsg(data.msg) return } } })
主要的代码就是
let str = res.data // step1: 首先去掉两头的"", let str1 = str.replace(/\ufeff/g,"") // step2: 转换成JSON格式的数据 let data = JSON.parse(str1)
完成以上两个步骤就可以实现字符串转成JSON格式了!