2016-11-18 94 views
0

我想知道为什么当我尝试在我的json中获取一个变量时,它给了我undefined。从api获取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 
} 

什么我收到的控制台:

{ “数据”: {所有数据在这里显示}],“分页”:0}

undefined

不确定

不确定

+4

您需要将其解析为JSON。 – SLaks

+2

^^例如'data = JSON.parse(data)'作为回调的第一行。 –

+0

@SLaks为什么需要解析json时它已经是json – Mahi

回答

1

看起来你的路线返回字符串化JSON。

尝试

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

我还必须将数据变量更改为像resp_data这样的不同名称,因为我的json中的变量也称为数据,它给了我冲突... –

0

当你安慰它,如果它是一个对象,应该显示如下

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

为你的结果清楚地表明,这是一个字符串,所以你需要对它进行解析正如以上回答所告知的那样