我从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的许多迭代,它们都会产生某种错误,例如:无法读取未定义的属性“ results”。在这一点上,我有点迷茫,我们将不胜感激。
parsedResponse.response.results
是一个简单的数组,应使用数字索引进行访问。
因此,您想要
parsedResponse.response.results[0].avlEvents
但是,那不是您真正的问题。
您正在从信息流中阅读。我的猜测是您正在尝试从该流中读取整个JSON字符串,但是您的data
处理程序正在处理块。因此,很有可能您没有在一个块中获得完整的JSON字符串,因此您的代码不合适。
另外,我只是意识到您正在对数据进行字符串化然后解析,这很疯狂。这些方法彼此相反。您是否正在获取JSON字符串,或者不是。
在这种情况下,您可能会得到一个JSON字符串,因此,一旦拥有完整的字符串,就只需要解析它即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句