问一下咕咕监控的接口数据问题
发布于 6 年前 作者 dengshenkk 2455 次浏览 来自 开源微信小程序

关键信息已替换为" * "

({“UserId”:“",“LoginStatus”:1,“UserName”:"",“LoginStatusComment”:“Success”,“SignToken”:"*************”})

不是一个标准的json 小程序解析不了这样的数据啊 我该这么解析呢? 难道要手动去除头尾的小括号吗?

4 回复

我也遇到同样的问题

//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
回到顶部