无法获得JSON值响应

时间:2018-04-06 08:27:27

标签: javascript json

我正在使用节点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

请让我知道我哪里出错了,我该如何解决这个问题。

由于

4 个答案:

答案 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])