【问题标题】:Extracting data from JSON with Node.js使用 Node.js 从 JSON 中提取数据
【发布时间】:2020-10-22 10:34:25
【问题描述】:

我正在从食物食谱 api 中提取数据,响应是 JSON。

{
    "results": [
            {
                "id": 147605,
                "title": "Mac and Cheese",
                "image": "https://spoonacular.com/recipeImages/147605-312x231.png",
                "imageType": "png"
             },
             {
                "id": 137592,
                "title": "Mac and Cheese",
                "image": "https://spoonacular.com/recipeImages/137592-312x231.png",
                "imageType": "png"
             },
             {
                "id": 760335,
                "title": "Mac and Cheese",
                "image": "https://spoonacular.com/recipeImages/760335-312x231.jpg",
                "imageType": "jpg"
             },
             {
                "id": 1047165,
                "title": "Mac and Cheese",
                "image": "https://spoonacular.com/recipeImages/1047165-312x231.jpg",
                "imageType": "jpg"
             }
         ],
         "offset": 0,
         "number": 4,
         "totalResults": 1171
}

我想提取标题、ID 和图像。 我做到了:

request(url, (error, response) => {
    console.log(response.body.results["id"])
    console.log(response.body.results["title"])
    console.log(response.body.results["image"])
})

我希望将它们存储在变量中并用它做其他事情,但现在我只想将它打印到终端。

我的所有日​​志都未定义。 我不确定我是否应该做一些循环,或者类似的事情。

当我这样做时,我还应该补充:

    console.log(response.body.results) // outputs undefined
    console.log(response.body)         // outputs the JSON response

所以这一定意味着我错误地访问了结果数组。

感谢您的帮助!

【问题讨论】:

  • 尝试使用 JSON.parse(response.body) 解析 response.body 并将结果分配给一个变量。现在您应该可以访问数据了。更多here
  • PS:请求已弃用,请改用Axios
  • 见@DaStrangeBoi 回答

标签: node.js json parsing


【解决方案1】:

当你打电话时:

response.body.results["id"]

你说results 是一个对象,但它不是一个对象,而是一个对象数组。话虽如此,如果您想访问第一个对象,则必须将其称为

console.log(response.body.results[0].id);

如果你想得到所有这些,你可以把它放在一个循环中

for (let i = 0; i < response.body.results.length; i++) {
    console.log(response.body.results[i].id)
}

编辑:

我没看到的一件事是response.body.results 返回未定义。正如@Carlo Corradini 所说,JSON.parse(response.body) 可能会解决这个问题。

一个例子是:

let jsonData = JSON.parse(response.body);
console.log(jsonData.results[0].id);

希望这会有所帮助!对不起,如果这让人困惑。如果是这样,请问您有任何问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多