我在Node js客户端的以下代码中收到了以下JSON:
res.on('data', function (chunk) {
var parsedResponse = JSON.parse(JSON.stringify(chunk));
console.log(parsedResponse);
});
控制台输出:
{ "response" : {
"results" : [ {
"events" : {
"numAvlEvents" : 161,
"numDtcEvents" : 0,
"numJbusEvents" : 0,
"numJbusDtcEvents" : 0,
"numObdProvisionEvents" : 0,
"numDeviceCommandResponseEvents" : 0,
"avlEvents" : [ {
"avlEvent" : {
"deviceId" : 35,
"eventTime" : "2015-02-13T08:05:40.000Z",
"eventType" : "ALIVE",
"gps" : {
"gps" : {
"carrier" : 410,
"gpsValidity" : true,
"hdop" : 4.0,
"latitude" : 33.7974925,
"longitude" : -85.16405,
"odometer" : 0.0,
"satellites" : 9
}
},
"telemetry" : {
"telemetry" : {
"altitude" : 37327,
"odometer" : 0.0,
"speed" : 0
}
}
}
}, {
"avlEvent" : {
"deviceId" : 35,
...
}
} ]
}
} ]
}
}
我似乎无法弄清楚如何访问" avlEvents"的内容。数组似乎嵌套在"事件"对象,它反过来嵌套在"结果"数组,反过来嵌套在"响应"对象
我已尝试过多次parsedResponse.response.results迭代[' events']。avlEvents都会产生某种错误,例如: 无法阅读财产'结果'未定义的。我此时有点失落,任何帮助都会受到赞赏。
答案 0 :(得分:1)
parsedResponse.response.results
是一个简单的数组,应该使用数字索引进行访问。
因此,你想要
parsedResponse.response.results[0].avlEvents
然而,这不是你的问题。
你正在阅读一个小溪。我的 guess 是你试图从该流中读取整个JSON字符串,但是你的data
处理程序正在处理块。因此,很有可能您没有在一个块中获取完整的JSON字符串,因此您的代码不合适。
同样,我刚刚意识到你正在进行字符串化,然后解析你疯狂的数据。那些方法是彼此相反的。要么你得到一个JSON字符串,要么你没有。
在这种情况下,你可能会得到一个JSON字符串,所以你需要解析它,一旦你完全拥有它。