【问题标题】:Variable undefined when getting json from api从api获取json时变量未定义
【发布时间】:2017-04-02 15:11:07
【问题描述】:

我想知道为什么当我尝试在我的 json 中获取一个变量时它给我 undefined。

这是我正在执行的代码:

var options = {
  host: url,
  path: '/api/v1/outside_processes/active_companies?process_token=' + process_token,
  method: 'POST'
};

http.request(options, function(res) {
  res.setEncoding('utf8');
  res.on('data', function (data) {
    console.log(data);
    console.log(data.data);
    console.log(data["data"]);
    console.log(data.paging);
  });
}).end();

来自api的json:

{
"data": [
    {
        "id": 37
        ...more data
    },
    {
        "id": 15,
          ...more data
    }
],
"paging": 0
}

我在控制台中得到了什么:

{"data":[{这里显示所有数据}],"paging":0}

未定义

未定义

未定义

【问题讨论】:

  • 您需要将其解析为 JSON。
  • ^^ 例如,data = JSON.parse(data) 作为回调的第一行。
  • @SLaks 为什么需要解析 json 时已经是 json
  • @Mahi:这是一个字符串。如果你想要一个对象,你需要解析字符串。

标签: javascript json node.js aws-lambda


【解决方案1】:

看起来您的路线正在返回字符串化的 JSON。

试试

jsonData = JSON.parse(data)
console.log(jsonData)
console.log(jsonData.data)
console.log(jsonData.paging)

【讨论】:

  • 我还必须将数据变量更改为不同的名称,例如 resp_data,因为我的 json 中的变量也称为数据,它给我带来了冲突......
【解决方案2】:

当你控制台它时,如果它是一个对象,它应该显示如下

Object {data: Array[2], paging: 0}

因为你的结果清楚地表明它是一个字符串,所以你需要按照上面的答案来解析它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-05
    • 2016-06-23
    • 2021-04-10
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-20
    • 2018-05-31
    相关资源
    最近更新 更多