如何访问事先不知道id的json属性?

时间:2012-03-03 18:04:14

标签: javascript json google-chrome-extension

在下面的JSON示例中,当我不知道javascript中这些元素的id时,如何访问list的项目。

{
   "list":{
      "93817":{
         "item_id":"93817"
         "url":"http://url.com",
         "title":"Page Title"
      },
      "935812":{
         "item_id":"935812",
         "url":"http://google.com",
         "title":"Google"
      }
   }
}

var jsonObject = JSON.parse(req.responseText);
var item = jsonObject.list[0] // This does not work

PS:我不能改变JSON的格式,因为它是由第三部分创建的。

4 个答案:

答案 0 :(得分:4)

如果你的意思是你在编写程序时不知道它,但是在执行时,你可以使用:

var key = "935812";
console.log(object.list[key]);

如果您想要在执行时查看哪些键存在,您可以迭代这些键:

for (var key in object.list) {
  if (object.list.hasOwnProperty(key)) {
    console.log(key + ":", object.list[key]);
  }
}

答案 1 :(得分:3)

您可以使用“for(i in obj)”Javascript构造迭代响应。请注意,以这种方式进行迭代可能会发现原型链中较高对象的属性(谁知道你的JSON对象经过了什么?),所以如果你愿意,你可以非常明确,并检查它。

response = {
   "list":{
      "93817":{
         "item_id":"93817",
         "url":"http://url.com",
         "title":"Page Title"
      },
      "935812":{
         "item_id":"935812",
         "url":"http://google.com",
         "title":"Google"
      }
   }
};

for (var id in response.list) {
    if (response.list.hasOwnProperty(id)) {
        // Now 'id' is the previously unknown id,
        ​// and response.list[id] is the list items.
        console.log(id, response.list[id]​);
    }
}​

答案 2 :(得分:1)

var list = obj["list"];
for (item in list) {
    if (list.hasOwnProperty(item)) {
        alert( list[item].item_id );
    }
}

在这种情况下,hasOwnProperty检查可能不是必需的,但通常您可能希望确保它不是继承的属性。

答案 3 :(得分:1)

你像这样通过它们来循环:

for (i in jsonObj.list){ 
    alert(a.list[i].title); 
};