关键信息已替换为" * "
({“UserId”:“",“LoginStatus”:1,“UserName”:"",“LoginStatusComment”:“Success”,“SignToken”:"*************”})
不是一个标准的json 小程序解析不了这样的数据啊 我该这么解析呢? 难道要手动去除头尾的小括号吗?
我也遇到同样的问题
//request internet 真实上线时 要求https版本符合要求
wx.request({
url: 'https://api.gugujiankong.com/account/Login?email=' + this.data.email + '&password=' + this.data.password,
header: {
'Content-Type': 'application/json' // 默认值
},
success: function (res) {
wx.hideToast();
console.log(res.statusCode)
console.log(res.data.LoginStatus)
if (res.data.LoginStatus == 1) {
//登录成功进行一些用户状态储存
//进行tab的切换
wx.switchTab({
url: '../../pages/index/index',
success:function(){
console.log("called switchtab.");
}
});
}
else {
wx.showModal({
title: '登录失败',
content: '请检查用户信息',
showCancel: false,
success: function (res) {
//回调函数
}
});
}
}
})
查了一下这个是JSONP,不是JSON格式,不知道怎么解析
({"UserId":6666,"LoginStatus":1,"UserName":"zzzz","LoginStatusComment":"Success","SignToken":"xxxx"});
但是console一下 res.data.LoginStatus 结果是undefine 查了一下res.data 的型是string,难道要写loop一个字一个字找,肯定有别的提取方法
你好,应该是我接口返回的 jsonp,因为还有其他的 app 再调用,你可以用代码去除头部的 ( 以及尾部的 ); 这部分应该是小程序更新了,对 json 做了严格校验。用 JSON.stringify() 试试看。
var tojson = JSON.stringify(res.data)
结果还是没有返回想要的json格式
"({\"UserId\":1111,\"LoginStatus\":1,\"UserName\":\"zzzzz\",\"LoginStatusComment\":\"Success\",\"SignToken\":\xxxxxxxx\"});"
谢谢parry 老师的解答 1,手动将得到的string 头尾的(); 去掉 2,去掉后的string,用JSON.parse() 转换成object 3,object形式就可以直接取得里面的值了, obj.key
//replace the () with '' manually
var a = res.data;
console.log(a);
var b= a.replace('(','').replace(');','');
var obj=JSON.parse(b)
console.log(typeof obj)//object
console.log(obj.LoginStatus)//1