无法循环访问JSON数据

时间:2015-09-21 21:36:12

标签: javascript jquery json

我有以下Json数据(请参阅图片)。我试图使用下面的jQuery代码提取数据,但它不起作用。请帮忙。

var items = [];
$.each($.parseJSON(OnePointData), function (key, val) {
    items.push("<li id='" + key + "'>" + val + "</li>");
    $.each(key, function(key2, val2) {
        items.push("<li id='" + key2 + "'>" + val2 + "</li>");
    });
});
console.log(items);

这是我的控制台的图片:

enter image description here

以下是我实施的其他代码:

   $.getJSON("/Home/GetOnePointData", { Address: ui.item.value },function(OnePointData) {
       console.log(OnePointData);
       var items = [];
       var items2 = [];
       $.each($.parseJSON(OnePointData), function (key, val) {
            items.push("<li id='" + key + "'>" + val + "</li>");
            $.each(key, function (key2, val2) {
                items2.push("<li id='" + key2 + "'>" + val2 + "</li>");
            });
       });
       console.log(items2);
  });

如果我运行一次循环,那么我得到以下结果。

enter image description here

数据采用以下格式:

{"GetQuestions":{"s1":"Q1,Q2","s2":"Q1,Q2,Q3","s3":"Q1,Q2,Q4","s4":"Q1,Q2,Q4,Q6"},
"GetQuestions2":{"s1":"Q1,Q2","s2":"Q1,Q2,Q3","s3":"Q1,Q2,Q4","s4":"Q1,Q2,Q4,Q6"}}

1 个答案:

答案 0 :(得分:0)

正如@Barmar所说,$.getJSON会自动调用$.parseJSON。所以,只需尝试删除$.parseJSON函数:

$.getJSON("/Home/GetOnePointData", { Address: ui.item.value}, function(OnePointData) {
    console.log(OnePointData);
    var items = [];
    var items2 = [];
    $.each(OnePointData, function (key, val) {
        items.push("<li id='" + key + "'>" + val + "</li>");
        $.each(val, function (key2, val2) {
           items2.push("<li id='" + key2 + "'>" + val2 + "</li>");
        });
    });
    console.log(items2);
});

这是一个使用您发布的数据结构的示例,它可以正常工作。

var OnePointData = {"GetQuestions":{"s1":"Q1,Q2","s2":"Q1,Q2,Q3","s3":"Q1,Q2,Q4","s4":"Q1,Q2,Q4,Q6"},
                    "GetQuestions2":{"s1":"Q1,Q2","s2":"Q1,Q2,Q3","s3":"Q1,Q2,Q4","s4":"Q1,Q2,Q4,Q6"}};
var items = [];
var items2 = [];
$.each(OnePointData, function (key, val) {
    items.push("<li id='" + key + "'>" + val + "</li>");
    $.each(val, function (key2, val2) {
       items2.push("<li id='" + key2 + "'>" + val2 + "</li>");
    });
});
console.log(items);
console.log(items2);

输出:

["<li id='GetQuestions'>[object Object]</li>", "<li id='GetQuestions2'>[object Object]</li>"]

["<li id='s1'>Q1,Q2</li>", "<li id='s2'>Q1,Q2,Q3</li>", "<li id='s3'>Q1,Q2,Q4</li>", "<li id='s4'>Q1,Q2,Q4,Q6</li>", "<li id='s1'>Q1,Q2</li>", "<li id='s2'>Q1,Q2,Q3</li>", "<li id='s3'>Q1,Q2,Q4</li>", "<li id='s4'>Q1,Q2,Q4,Q6</li>"]