Javascript 如何从这些JSON对象中筛选出值
我正在使用一个返回JSON代码的在线API,我不知道如何过滤JSON代码中的“name”值。我尝试过滤的JSON存在于许多对象中,我尝试了许多不同的方法。如何从每个对象中获取“name”的值?我尝试过这样做。people.name,但我总是得到一个空白输出,或者它只会说“[object object][object object][object object][object object][object object][object object]” JSON响应:Javascript 如何从这些JSON对象中筛选出值,javascript,node.js,json,Javascript,Node.js,Json,我正在使用一个返回JSON代码的在线API,我不知道如何过滤JSON代码中的“name”值。我尝试过滤的JSON存在于许多对象中,我尝试了许多不同的方法。如何从每个对象中获取“name”的值?我尝试过这样做。people.name,但我总是得到一个空白输出,或者它只会说“[object object][object object][object object][object object][object object][object object]” JSON响应: { "message":
{
"message": "success",
"number": 6,
"people": [
{
"craft": "ISS",
"name": "Oleg Kononenko"
},
{
"craft": "ISS",
"name": "David Saint-Jacques"
},
{
"craft": "ISS",
"name": "Anne McClain"
},
{
"craft": "ISS",
"name": "Alexey Ovchinin"
},
{
"craft": "ISS",
"name": "Nick Hague"
},
{
"craft": "ISS",
"name": "Christina Koch"
}
]
}
NodeJS中的我的代码:
请求('http://api.open-notify.org/astros.json',(错误、响应、html)=>{
如果(!error&&response.statusCode==200)
{
让astroJSON=JSON.parse(html);
让astroNum=astroJSON.number;
让astroNames=JSON.stringify(astroJSON.people);//这就是我需要帮助的地方!
控制台日志(“编号:+astroNum”);
log(“船员姓名:+astroNames);//返回我在上面发送的JSON响应。
}
});
您必须映射到阵列上。看
e、 g
将记录一组人员姓名:
["Oleg Kononenko", "David Saint-Jacques", "Anne McClain", "Alexey Ovchinin", "Nick Hague", "Christina Koch"]
为了卸下支架和COMA,您可以使用
astroNames.join(' ')
返回字符串“Oleg Kononenko David Saint Jacques Anne McClain Alexey Ovchinin Nick Hague Christina Koch”
请参见尝试使用
const数据=`{
“消息”:“成功”,
“数字”:6,
“人”:[
{
“飞船”:“国际空间站”,
“名称”:“Oleg Kononenko”
},
{
“飞船”:“国际空间站”,
“姓名”:“大卫·圣雅克”
},
{
“飞船”:“国际空间站”,
“姓名”:“安妮·麦克莱恩”
},
{
“飞船”:“国际空间站”,
“姓名”:“Alexey Ovchinin”
},
{
“飞船”:“国际空间站”,
“姓名”:“尼克·黑格”
},
{
“飞船”:“国际空间站”,
“姓名”:“克里斯蒂娜·科赫”
}
]
}`;
const obj=JSON.parse(数据);
常量天体名称=天体编号;
//用逗号连接船员姓名
constcrew=obj.people.map(x=>x.name).join(',');
控制台日志(机组)
人
是一个数组。所以.people.name
不起作用。可以执行JSON.stringify(astroJSON.people,null,2)
但是为什么要执行JSON.stringify
,只输出它,不在前面添加字符串。@仅供参考,您没有使用JSON。您已经解析了JSON,结果是一个javascript对象。您不需要过滤JSON。你永远不会与JSON交互。您可以解析它或发送/存储它。没有更多或更少。此外,您不需要序列化您的人员集合。您只需将对象作为另一个参数传递到console.log即可consile.log(“船员姓名:”,astroJSON.people)
非常感谢!但是,我现在如何删除输出中的“、和[],以便用户看起来更漂亮呢?再次感谢!
astroNames.join(' ')