【问题标题】:Cannot extract JSON property from object无法从对象中提取 JSON 属性
【发布时间】:2021-10-02 07:42:13
【问题描述】:

我有这个代码

request(options, (error, response) => {
  const data = JSON.parse(response.body)
  //console.log( JSON.stringify(data, null, " ") );
  console.log(data);
})

这给了我这个输出

{
 result: 'OK',
 data: {
   body: {
     pdpHeader: [Object],
     overview: [Object],
     hotelWelcomeRewards: [Object],
     propertyDescription: [Object],
     guestReviews: [Object],
     atAGlance: [Object],
     hotelBadge: [Object],
     unavailable: {}
  },
  common: { pointOfSale: [Object], tracking: [Object] }
  },
  transportation: { transportLocations: [ [Object], [Object], [Object] ] },
  neighborhood: { neighborhoodName: 'Manhattan' }
}

在这个输出的实际正文中,有这样的:

{4 items
"result":"OK"
"data":{2 items
    "body":{14 items
        "pdpHeader":{6 items
            "hotelId":"424023"
            "destinationId":"1506246"
            "pointOfSaleId":"HCOM_US"

我想调出hotelID号:424023

我已经尝试了以下一些其他修改,但似乎无法调出正确的对象

console.log(data.body.pdpHeader.hotelID)

但我收到错误消息

console.log(data.body.pdpHeader.hotelID);
                    ^

TypeError: Cannot read property 'pdpHeader' of undefined

【问题讨论】:

  • 我想你想要data.data.body ....等等...我假设保存这个对象的变量被称为data ...如果它被称为graham你会使用@ 987654329@ ... 现在有意义吗?你能看出哪里出错了吗?
  • 不是hotelID,是hotelId

标签: javascript node.js json parsing


【解决方案1】:

你也调用了你的常量data,所以你要么需要破坏,要么再次调用.data,就像这样。

销毁

您可以像这样将属性破坏到您的 data const 上:

const { data } = JSON.parse(response.body)
// data.body.pdpHeader.hotelID

作业

如果您不想破坏,请按以下方式致电data.data

const data = JSON.parse(response.body)
// data.data.body.pdpHeader.hotelID

【讨论】:

    猜你喜欢
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多