我正在使用节点js进行API调用,我得到类型字符串的以下响应(当我typeOf
时知道这一点)。
{
"metadata": {
"provider": "Press"
},
"results": [
{
"senses": [
{
"definitions": [
"this is an animal"
]
}
]
}
]
}
根据此回复,我需要提取this is an animal
,并且我正在尝试使用以下代码片段获取数据。
console.log(JSON.parse(body.results[0].senses[0].definitions[0]));
但这给我一个错误,如下所示
console.log(JSON.parse(body.results[0].senses[0].definitions[0]));
^
TypeError: Cannot read property '0' of undefined
请让我知道我哪里出错了,我该如何解决这个问题。
由于
答案 0 :(得分:1)
您正在尝试解析对象的内容,该对象尚不是JSON对象。你需要解析整个"身体"变量,在尝试访问它的内容之前。
试试这个:
body = JSON.parse(body);
console.log(body.results[0].senses[0].definitions[0]);
您也可以只在一行中完成所有操作,但我不推荐它,因为之后您可能想要使用此变量:
console.log(JSON.parse(body).results[0].senses[0].definitions[0]);
答案 1 :(得分:1)
你正在将body
视为一个对象(你说它是一个字符串),然后试图抨击"这是一个动物"好像它是JSON(这不是')。
您需要将字符串传递给JSON.parse
,然后阅读其结果的属性。
JSON.parse(body).results[0].senses[0].definitions[0]
请注意)
位于更正后的表达式中。
答案 2 :(得分:0)
您实际上应该将body
解析为JSON.parse(body)
并从中获取result
属性:
var body = `{
"metadata": {
"provider": "Press"
},
"results": [
{
"senses": [
{
"definitions": [
"this is an animal"
]
}
]
}
]
}`;
console.log(JSON.parse(body).results[0].senses[0].definitions[0]);

答案 3 :(得分:0)
您将字符串视为对象,首先需要解析body
:
console.log(JSON.parse(body).results[0].senses[0].definitions[0])