NodeJS未定义的JSON值

时间:2017-10-22 21:31:29

标签: javascript json node.js

我正在尝试获取app_data,因为它包含我需要的其他数据,例如质量,但每次我尝试记录app_data时都会出现未定义的,记录itemJson可以正常工作吗?

代码

function getBPPrice(item, itemJson){
     console.log(itemJson);
     console.log(itemJson.app_data);
     console.log(itemJson.app_data.quality);
     console.log(Prices.response.items[item].prices[itemJson.app_data.quality][itemJson.tradable].Craftable[0].value);
}

var item = theirItems[i].market_name;
var itemJson = JSON.stringify(theirItems[i], null, 4);

getBPPrice(item, itemJson);

现在,console.log(itemJson);按照我之前的说法工作,但是console.log(itemJson.app_data);只输出undefined,所以下一个输出是质量值不起作用。

的Json

https://pastebin.com/cFSd6GLU

Pastebin链接因为它很长,app_data也接近底部。

编辑:

我得到错误 -

  

未定义C:\ Users \ datpe \ Desktop \ d \ bot.js:89            的console.log(itemJson.app_data.quality);                                         ^

     

TypeError:无法读取undefined的属性'quality'       在getBPPrice(C:\ Users \ datpe \ Desktop \ d \ bot.js:89:32)       at processOffer(C:\ Users \ datpe \ Desktop \ d \ bot.js:136:4)       在TradeOfferManager.manager.on(C:\ Users \ datpe \ Desktop \ d \ bot.js:189:2)       在emitOne(events.js:115:13)       在TradeOfferManager.emit(events.js:210:7)       at received.forEach(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ polling.js:235:10)       at Array.forEach(native)       at getOffers(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ polling.js:219:12)       在Helpers.checkNeededDescriptions(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ index.js:483:4)       在Async.map(C:\ Users \ datpe \ node_modules \ steam-tradeoffer-manager \ lib \ assets.js:171:4)

1 个答案:

答案 0 :(得分:2)

这不是100%清楚你要在这里做什么,但看起来你有一个数组theirItemstheirItems的每个成员都是你想要的对象。但是当你这样做的时候......

var itemJson = JSON.stringify(theirItems[i], null, 4);

itemJson现在是一个字符串,表示您想要的对象,而不是对象本身。然后,您无法访问该对象的各个元素,如:

itemJson.app_data

因为它是一个字符串,而不是实际的对象。

我认为你想要做的只是抓住对象本身并将其传递给你的函数:

var itemJson = theirItems[i]
// then pass the actual object:
getBPPrice(item, itemJson);