使用jQuery迭代JSON对象

15
{"name": "John Smith", "age": 30, "city": "New York"}
我有一个JSON对象,其内容如下:{"name": "John Smith", "age": 30, "city": "New York"}。
[
{"DisplayName":"Answer Number 1","Value":"Answer1","Option":"True"},
{"DisplayName":"Answer Number 1","Value":"Answer1","Option":"False"},
{"DisplayName":"Answer Number 2","Value":"Answer2","Option":"True"},
{"DisplayName":"Answer Number 2","Value":"Answer2","Option":"False"}
]

我需要做的是从这个对象中创建两个下拉框:

答案1 -> 真/假

答案2 -> 真/假

下拉部分我会自己完成... 我只是不知道如何迭代这个对象。有没有人可以给我一些示例?


你在第二个元素后面漏了逗号吗? - leonhart
你无法更改JSON的结构吗?这似乎是一种糟糕的表示所需信息的方式。 - Anthony Grist
4个回答

32

您的JSON对象jsonObject存储在数组中。操作:

$.each(jsonArray, function(index,jsonObject){
    $.each(jsonObject, function(key,val){
        console.log("key : "+key+" ; value : "+val);
    });
});

它将为您提供

key : DisplayName ; value : Answer Number 1
key : Value ; value : Answer 1
key : Option ; value : true

无论如何,安东尼是对的。你的结构将很难进行操作。


非常感谢,这个对你有所帮助。 - Vipertecpro

4
你的JSON不是有效的。 这样怎么样:
var json = '[
    {"DisplayName":"Answer Number 1","Value":"Answer1","Option":"True"},
    {"DisplayName":"Answer Number 1","Value":"Answer1","Option":"False"},
    {"DisplayName":"Answer Number 2","Value":"Answer2","Option":"True"},
    {"DisplayName":"Answer Number 2","Value":"Answer2","Option":"False"}
]';
var jsonObject = $.parseJSON(json); //Only if not already an object
$.each(jsonObject, function (i, obj) {
    alert(obj.DisplayName);
});

Fiddle


2
使用jQuery.each()函数。
$.each( yourArrayOfObjects, function( index, object ){
  // do your magic here
});

0
var json = [{
    "DisplayName": "Answer Number 1",
        "Value": "Answer1",
        "Option": "True"
}, {
    "DisplayName": "Answer Number 1",
        "Value": "Answer1",
        "Option": "False"
}, {
    "DisplayName": "Answer Number 2",
        "Value": "Answer2",
        "Option": "True"
}, {
    "DisplayName": "Answer Number 2",
        "Value": "Answer2",
        "Option": "False"
}];

迭代

    for (i in json) {
//json[i] is your current object inside the array, {"DisplayName":"Answer Number 1","Value":"Answer1","Option":"True"}
        for (key in json[i]) {
// keys are DisplayName,  Value, Option
            alert(key);
            alert(json[i][key]); // instead of writing object.key you can also write object[key]
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接