#javascript #node.js #json #parsing
Вопрос:
У меня есть этот код
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"
Я хочу позвонить по номеру телефона отеля: 424023
Я попробовал следующие несколько других модификаций этого, но, похоже, не могу вызвать правильный объект
console.log(data.body.pdpHeader.hotelID)
Но я получаю сообщение об ошибке
console.log(data.body.pdpHeader.hotelID);
^
TypeError: Cannot read property 'pdpHeader' of undefined
Комментарии:
1. Я думаю, ты хочешь
data.data.body
… и так далее … Я предполагаю, что переменная, содержащая этот объект, называетсяdata
… если бы это называлосьgraham
, вы бы использовалиgraham.data.body
… теперь это имеет смысл? ты видишь, где ты ошибся?2. это не отель, это отель
Ответ №1:
Вы также вызвали свою константу data
, так что вам нужно будет либо уничтожить, либо позвонить .data
снова, вот так.
Уничтожить
Вы можете уничтожить свойство на своей data
константе вот так:
const { data } = JSON.parse(response.body)
// data.body.pdpHeader.hotelID
Назначение
Если вы не хотите разрушать, позвоните data.data
, как указано ниже.
const data = JSON.parse(response.body)
// data.data.body.pdpHeader.hotelID