如何遍历JSON obj的属性?

时间:2012-09-27 13:38:40

标签: javascript jquery json

  

可能重复:
  How to loop on a JSON object?

我正试图找出如何遍历JSON obj的属性。我可以通过指定键来获取属性(见下文),但是如何循环遍历所有这些属性?

var jsonStr = '{"Items":[{"Title": "Title 1", "Description":"Description 1"}]}';

var json_parsed = $.parseJSON(jsonStr);


// Cycle through all list items
$.each(json_parsed.Items, function(i, val) {
    var listItem = $(this);

    var title = listItem.attr('Title');
    var description = listItem.attr('Description');

    // Instead, loop through all attributes

}

3 个答案:

答案 0 :(得分:19)

for (var name in json_parsed) {
    console.log(name + "=" + json_parsed[name]);
}

如果你需要检查是否在相关对象上定义了相应的属性,而不是原型链上的某些属性(这对于有问题的情况来说这很荒谬,但仍然有用),你可以添加这个检查:

if (json_parsed.hasOwnProperty(name))
    console.log(name + "=" + json_parsed[name]);

修改

要实际迭代所有数组对象的属性,请使用以下代码段:

var items = json_parsed.Items;
for (var i = 0; i < items.length; ++i) {
    console.log("Item #" + i);
    for (var name in items[i]) {
        console.log(name + "=" + items[i][name]);
    }
}

答案 1 :(得分:2)

JSON对象只是一个Javascript对象。如果您已经在使用jQuery,则可以再次使用$ .each()来迭代其命名属性。

答案 2 :(得分:1)

var jsonStr = '{"Items":[{"Title": "Title 1", "Description":"Description 1"}]}';

var json_parsed = JSON.parse(jsonStr);

var items = json_parsed.Items; // an array

for (var i=0; i<items.length; i++) { // loop over it

     var listItem = items[i]; // an object

     for (var prop in listItem) { // enumerate its property names

         // prop is "Title", "Description" etc
         listItem[prop] // is the respective value

     }

}