【发布时间】:2021-01-02 06:00:56
【问题描述】:
这是一个关于访问对象内的数组并将其转换为 JSON 的菜鸟问题。
运行下面的 GET 方法时遇到的错误:
无法读取未定义的属性“VehicleList”
如何解决这个问题?
let get = https.get(
{
hostname: 'xyz.com',
path: path_get_all_vehicles //this variable is known and passed into path
},
(getRes) => {
console.log(`executing getRes...`);
var reply = "";
getRes.on("data", (chunk) => {
(reply += chunk);
}
);
getRes.on("end", () => {
gotCars(JSON.parse.stringify(reply.Response.VehicleList)); //ERROR
}
);
}
);
数据格式如下图,思路是访问VehicleList数组,将其转换为JSON,解析后传递给函数gotCars
{
"ResponseStatus": 1,
"Response": {
"VehicleList": [
{
"ID": AAA,
"BrandID": 89,
"ModelID": 980,
"VersionID": 11289
},
{
"ID": BBB,
"BrandID": 89,
"ModelID": 980,
"VersionID": 8338
},
],
"VehicleCount": 17866
}
}
【问题讨论】:
-
你能在打电话给
gotCars()之前做一个console.log(reply)吗? -
看起来您构建
reply的方式是将块附加到字符串。所以我最好的猜测是,当你的end处理程序执行时,reply已经是一个字符串化的 JSON 对象。我建议先尝试在您的处理程序中将reply设置为等于JSON.parse(reply),然后然后尝试gotCars(JSON.parse.stringify(reply.Response.VehicleList))。 -
什么是
JSON.parse.stringify()?JSON.parse()将 JSON 转换为对象/数组,JSON.stringify()将对象/数组转换为 JSON。
标签: javascript node.js arrays json get