如何解决无法访问对象内的数据 - 菜鸟 Javascript 问题
这是一个关于访问对象内部的数组并将其转换为 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,"VersionID": 8338
},],"VehicleCount": 17866
}
}
解决方法
您首先需要解析 reply
,这将创建对象。然后您可以访问其属性。
getRes.on("end",() => {
const obj = JSON.parse(reply);
gotCars(obj.Response.VehicleList);
});
,
表达式 JSON.parse.stringify(reply.Response.VehicleList)
无效,原因如下:
- 全局
JSON.parse
没有名为stringify
(undefined
) 的属性 -
undefined
无法调用 - 全局
String.prototype
(reply
是一个字符串)没有名为Response
(undefined
) 的属性 -
undefined
无法编入索引
我假设您正在尝试将 reply
解析为 JSON,然后从结果中获取 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(reply).Response.VehicleList);
});
}
);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。