Как получить доступ к атрибуту json, идентификатор которого не известен заранее? - PullRequest
3 голосов
/ 03 марта 2012

В следующем примере JSON, как я могу получить доступ к элементу list, когда я не знаю id этих элементов в javascript.

{
   "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 ]

4 голосов
/ 03 марта 2012

Если вы имеете в виду, что вы не знаете этого во время написания программы, но узнаете во время выполнения, вы можете использовать:

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]);
  }
}
3 голосов
/ 03 марта 2012

Вы можете перебрать ответ, используя конструкцию Javascript "for (i in obj)".Имейте в виду, что итерация таким образом может раскрыть свойства более высоких объектов в цепочке прототипов (кто знает, через что прошел ваш объект JSON ...), так что вы можете быть очень явными, если хотите, и проверьте это.1002 *

1 голос
/ 03 марта 2012

Вы можете проходить через них так:

for (i in jsonObj.list){ 
    alert(a.list[i].title); 
};
1 голос
/ 03 марта 2012
var list = obj["list"];
for (item in list) {
    if (list.hasOwnProperty(item)) {
        alert( list[item].item_id );
    }
}

Проверка hasOwnProperty в этом случае, вероятно, не требуется, но в целом вы можете убедиться, что это не унаследованное свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...