JSON,解析具有不同名称的子对象

时间:2016-08-02 22:31:06

标签: javascript json

所以我试图解析一个JSON响应:

{
"success":true,
"rgInventory":{
"7058200129":{
"id":"7058200129",
"classid":"1690096482",
"instanceid":"0",
"amount":"1",
"pos":1
},
"7038515091":{
"id":"7038515091",
"classid":"310776543",
"instanceid":"302028390",
"amount":"1",
"pos":2
},
"6996242662":{
"id":"6996242662",
"classid":"310781169",
"instanceid":"302028390",
"amount":"1",
"pos":3
},

所以我需要访问rgInventory来处理子集。问题是我尝试将此作为我的代码来解析JSON:

obj.rgInventory[0]

这通常适合我,但这次不起作用。问题是这是JSON的一小部分,大约有200个这样的回复。如何动态解析所有这些?

我只需要帮助获取数据。谢谢!

2 个答案:

答案 0 :(得分:1)

rgInventory是一个对象,而不是一个数组,所以它不能像数组一样被访问。请注意冒号后面的{而不是[

使用this获取对象中的第一个元素:

var obj = { foo: 'bar' };
console.log(obj[Object.keys(obj)[0]]); //logs 'bar'

Here是关于数组和对象之间差异的精彩教程。

答案 1 :(得分:1)

首先,这不是一个有效的JSON,但无论如何你在这里共享了一个JSON对象,我们可以解析它并通过它们的键访问子对象:

var rgInventory = json["rgInventory"];

这是 DEMO代码段

var json = {
"success":true,
"rgInventory":{
"7058200129":{
"id":"7058200129",
"classid":"1690096482",
"instanceid":"0",
"amount":"1",
"pos":1
},
"7038515091":{
"id":"7038515091",
"classid":"310776543",
"instanceid":"302028390",
"amount":"1",
"pos":2
},
"6996242662":{
"id":"6996242662",
"classid":"310781169",
"instanceid":"302028390",
"amount":"1",
"pos":3
}}};

var rgInventory = json["rgInventory"];
alert(rgInventory[6996242662].id);