jQuery在多个级别上解析JSON

时间:2012-08-09 17:13:26

标签: jquery json parsing

我正在尝试解析以下内容并显示一个显示“City,State”的简单输出列表:

{
"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);
});

原始数据来自回调。

6 个答案:

答案 0 :(得分: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已经过解析,因此您可以使用list获取output.data

答案 1 :(得分:5)

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

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

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

答案 2 :(得分:0)

data是一个数组,所以只需使用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);
}

答案 3 :(得分:0)

试试这个:

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

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

当你跳转到jQuery中的任何函数时,你会切换到“this” - 每个“列表”中的数据都没有正确保存到项目中。

答案 4 :(得分:0)

success: function (response) {

                       var output = response[0].City;



                       alert(output);

                   }

答案 5 :(得分: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);
});