使用AJAX JQuery访问/处理(嵌套)对象,JSON中的数组

时间:2014-01-06 04:20:05

标签: javascript jquery ajax arrays json

我有一个包含对象和数组的(嵌套)数据结构。如何提取信息,即访问特定或多个值(或键),如1,105,1055?

例如:

[{"1":{"url":"http:\/\/web.com\/","catname":"HOBBIES"}},
{"105":{"parent":"1","url":"http:\/\/web.com\/","catname": "TRUCKS"}},
{"1055":{"parent":"105","url":"http:\/\/web.com\/","catname":"TIRES"}} ]

代码是:

$( document ).ready(function() {
var formURL = 'http://web.com/ajax.php?store=photo&action=jsoncategories';
        $.getJSON( formURL, function(json) {
        $.each(json[0], function(i, object) {
              $.each(object, function(property, value) {
              console.log(property + "=" + value);
              });
           });
        });
});

json [0]遍历key 1的数据。应该替换json [0]以提取数组的所有数据键

2 个答案:

答案 0 :(得分:2)

你错过了“卡车之前”。 另外,请尝试使用console.log(property + "=" + value);而不是alert()。

$.each(json, function(key, val) {
    $.each(val, function(index, value){
         console.log(value);
    });
});

或者可能是这样:

$.each(json, function(key, val) {
    $.each(val, function(key, val) {
        console.log(val.url);
    });
});

答案 1 :(得分:1)

这是遍历元素的JavaScript。我假设数据已加载,并且代码中的遍历开始如下:

var json = [{"1":{"url":"http:\/\/web.com\/","catname":"HOBBIES"}},
{"105":{"parent":"1","url":"http:\/\/web.com\/","catname": "TRUCKS"}},
{"1055":{"parent":"105","url":"http:\/\/web.com\/","catname":"TIRES"}} ];



for(var i=0, json_len=json.length; i< json_len; i+=1)
{
    var j = json[i]; // Here you are accessing to the item of Array using index of item.
    for(var k in j)
    {
       var d=j[k]; //Here you are accessing to the object using key pair.
       for(var l in d)
           console.log( k, ':', l, ':', d[l]);
    }
}

您可以在JSFIDDLY中看到示例代码执行。

如果你有长json数组这种方法更好。因为您的json变量是Array,并且应该使用for循环遍历数组元素之间的遍历。您的数组项是对象,因此应使用for ... in遍历它们。这是记住的最佳方法。因为for loopeach快。这是jsperf中的comparison。如果您有任何问题,请随时在这里发表评论。