如何使用jquery读取多级json格式

时间:2013-03-27 02:28:58

标签: php jquery json

我有像

这样的json格式
[
    {
        id: 15,
        diemdung: "a"
    },
    {
        id: "16",
        diemdung: "b",
        khoangcach: "300",
        pho: "c",
        da: [
            {
                lancan: "d",
                kc: "333"
            },
            {
                lancan: "e",
                kc: "322"
            }
        ]
    },
    ...
]

我使用像print json_encode($rows);这样的php 我尝试在客户端使用jquery如

读取它
$.getJSON(url,function(json){
    $.each(json,function(key, val){
        $.each(this.da,function(){
            alert(this.kc);
        });
    });
});

但它不起作用。我是怎么做到的?感谢

3 个答案:

答案 0 :(得分:1)

如果您的代码正常工作,则可能会收到以下错误:

TypeError: obj is undefined

这是因为外部数组中的第一个对象没有“da”属性的值。在尝试遍历“da”属性所持有的数组之前,应检查它是否存在。

尝试:

$.getJSON(url,function(json){
    $.each(json,function(){
        if (this.da) {
            $.each(this.da,function(){
                alert(this.kc);
            });
        }
    });
});

答案 1 :(得分:0)

 $.each(json, function(arrayID, arrayVal) {
  //alert(arrayVal.id);
  $.each(arrayVal.da, function(daKey,daData) {
   alert(daData.kc);
  });
 });

前面提到同样的问题,以获取更多代码

JQuery $.each() JSON array object iteration

编辑以重命名某些变量以使其更清晰

答案 2 :(得分:0)

对于n级层次结构

var str = '{"countries":[{"name":"USA","grandfathers":[{"gFName":"Steve","grandfathersKid":[{"gFKName": "Linda","kid": [{"name": "Steve JR", "friends": [{"name": "Kriss|John|Martin|Steven"}]}]}]}]}]}';
var obj = jQuery.parseJSON(str);
parseJsonString(obj);

功能:

function parseJsonString(data){       
    $.each(data, function(index, val){

        if($.type(val) == 'object' || $.type(val) == 'array'){
            product.parseJsonString(val);
        }else{
            alert(index + ' - ' + val);
        }

    });
}