如何使用jquery动态访问json中的值

时间:2013-10-25 08:21:22

标签: javascript jquery json

是的,有许多线程质疑下面的类似问题,但我发现很少和很少有关于动态密钥和从每个密钥持有多个值的jsons中提取单个值的帮助。

我有一个json,其中键是动态的,我需要能够调用每个单独的值。

有什么想法吗?

json示例如下:

{"AppliedPrepaidBundle":{"id":["14","15","24","25","26","27","28","29","30","31"],"prepaid_bundle_id":["5","5","5","5","5","5","5","5","5","5"]},"Device":{"id":["77","77","91","91","117","117","117","117","117","124"]}}

我使用了以下代码,但目前只设法吐出一串值而不是单独的值:

        $.each(data, function (key1, value1) {
            $.each(value1, function (key, value) {
                $('body').append('<li id="' + key + '">' + key1 +' ' + key +' ' + value + '</li>');
            });
        });

解决了这个问题:

        json = JSON.parse(data);
        for (var index in json) {
            $.each(json[index], function(key,value) {
                for(var i = 0; i< json[index][key].length; i++){
                    $('body').append('<li>' + index +' ' + key +' ' + json[index][key][i] + '</li>');
                }
            });
        }

4 个答案:

答案 0 :(得分:0)

JSON在JavaScript中返回一个对象。所以你可以这样做:

var json = {"AppliedPrepaidBundle":{"id":["14","15","24","25","26","27","28","29","30","31"],"prepaid_bundle_id":["5","5","5","5","5","5","5","5","5","5"]},"Device":{"id":["77","77","91","91","117","117","117","117","117","124"]}};

for (var i=0; i<json.AppliedPrepaidBundle.id.length; i++) {
    console.log("id"+i+": "+json.AppliedPrepaidBundle.id[i]);
}

这将打印出ID对象的所有值:14,15,24,25等

答案 1 :(得分:0)

从此示例中,您可以访问所有元素

var json = {"AppliedPrepaidBundle":{"id":["14","15","24","25","26","27","28","29","30","31"],"prepaid_bundle_id":["5","5","5","5","5","5","5","5","5","5"]},"Device":{"id":["77","77","91","91","117","117","117","117","117","124"]}};

for (var i=0; i<json.AppliedPrepaidBundle.id.length; i++) {
   $('body').append("<li>AppliedPrepaidBundle id"+i+": "+json.AppliedPrepaidBundle.id[i]+'</li>');
}
for (var i=0; i<json.AppliedPrepaidBundle.prepaid_bundle_id.length; i++) {
    $('body').append("<li>PrepaidBundleid"+i+":"+json.AppliedPrepaidBundle.prepaid_bundle_id[i]+'</li>');
}
for (var i=0; i<json.Device.id.length; i++) {
    $('body').append("<li>Device id"+i+": "+json.Device.id[i]+'</li>');

}

Here is the fiddle

答案 2 :(得分:0)

使用JSON.parse创建对象。 (见How to parse JSON in JavaScript)。然后使用for (x in yourObject) { ... }循环遍历属性。

var jsonObject = JSON.parse('your JSON-String');
for (property in jsonObject) {
    // do something with jsonObject[property]
    console.log(property + ' ' + jsonObject[property]);
}

答案 3 :(得分:0)

您可以使用javascript基本功能: http://jsfiddle.net/taUng/

var data = {"AppliedPrepaidBundle":{"id":["14","15","24","25","26","27","28","29","30","31"],"prepaid_bundle_id":["5","5","5","5","5","5","5","5","5","5"]},"Device":{"id":["77","77","91","91","117","117","117","117","117","124"]}};
for (var dataIndex in data) {
     console.log(dataIndex, data[dataIndex]);
     var subData = data[dataIndex];
     for (var subDataIndex in subData) {
         console.log(subDataIndex, subData[subDataIndex]);
     }
}

等等......

当你适合javascript时,你也可以使用Recursion来重复自己。 (http://en.wikipedia.org/wiki/Dont_repeat_yourself