2012-08-09 74 views
1

我试图解析以下,并显示出“城市,国家”一个简单的输出列表:jQuery的解析JSON在多个层面

{ 
"status":"success", 
"data":[ 
    {"city":"Brooklyn Park","state":"MN"}, 
    {"city":"Campbellsport","state":"WI"}, 
    {"city":"Wauwatosa","state":"WI"}, 
      ... 
    ] 
} 

这是我到目前为止有:

var output = $.parseJSON(data); 
var list = output.data; 
$.each(list,function(){ 
    item = $.parseJSON(list); 
    console.log(list.city); 
}); 

原始数据来自回调。

回答

5

$.parseJSON将解析整个对象,你不需要解析每个元素。

var output = $.parseJSON(data); 
var list = output.data; 

$.each(list,function(i,item){ 
    console.log(item.city); 
}); 
+0

完美。知道这是愚蠢的。我会尽快选择你的答案,让我们... – Fluidbyte 2012-08-09 17:19:56

+0

很高兴我可以帮助:-) – 2012-08-09 17:31:30

5
var output = $.parseJSON(data); 
var list = output.data; 
$.each(list,function(index, val){ 

    // within val you'll get each 
    // data object 

    console.log(val.city); 
}); 

您不需要再次解析$.each()。因为output已经被解析,所以你可以使用output.data得到list

0

数据是一个数组,所以只需使用一个for循环

var output = $.parseJSON(data); 
var list = output.data; 
for (var i=0; i<list.length; i++){ 
    var city = list[i].city; 
    var state = list[i].state; 
    console.log(city + "," + state); 
} 
0

试试这个:

var output = $.parseJSON(data); 
var list = output.data; 

$.each(list, function() { 
    console.log(this['city']); // could also be this.city 
}); 

当你跳进任何功能如jQuery的里面,你再切换到“这个“ - 每个”列表“中的数据都没有正确保存到项目中。

0
success: function (response) { 

         var output = response[0].City; 



         alert(output); 

        } 
+0

我认为这将有所帮助。如果你想获得第一个城市,然后使用0,并继续增加数量为更多的城市。 – user3233312 2014-01-24 19:32:48

0

这可能有所帮助。

var json = [ 
    {"id":"1","tagName":"apple"}, 
    {"id":"2","tagName":"orange"}, 
    {"id":"3","tagName":"banana"}, 
    {"id":"4","tagName":"watermelon"}, 
    {"id":"5","tagName":"pineapple"} 
]; 

$.each(json, function(idx, obj) { 
    alert(obj.tagName); 
});