在不使用getJSON()的情况下解析嵌套的JSON

时间:2013-08-20 17:45:26

标签: jquery json parsing

我知道已经有一百个“解析json”问题了 - 但我找不到一个符合我自己情况的解决方案。

我收到类似的JSON:

{    
"parent:array": [
    {
        "child:value": "test1",
        "child:array": [
            {
                "child:subvalue": "test3"
            }
        ]
    },
    {
        "child:value": "test2",
        "child:array": [
            {
                "child:subvalue": "test4"
            }
        ]
    }
]
}

我可以通过执行以下操作来访问child:value(其中response是JSON):

var parameters = response['parent:array'];
$.each(parameters, function (idx, data) {
    var childValue = data['child:value'];
});

但是,我还无法检索child:subvalue。它可以作为each的一部分吗?

我尝试了以下方法但没有成功:

response['parent:array']['child:array']

和...

var childSubvalue = data['child:array']['child:subvalue'];

3 个答案:

答案 0 :(得分:2)

"child:array"是一个数组,因此您需要提供一个索引来选择,如下所示:

var childSubvalue = data['child:array'][0]['child:subvalue'];

答案 1 :(得分:1)

一旦你的json有效:

$.each(parameters, function (idx, data) {
    var childValue = data['child:value'], childArray = data['child:array'];
    $.each(childArray, function(i, d) {
        alert(d['child:subvalue']);
    });
});

Fiddle

答案 2 :(得分:0)

使用array.forEach;

遍历外部和内部数组
var json = {    
"parent:array": [
    {
        "child:value": "test1",
        "child:array": [
            {
                "child:subvalue": "test3",
            }
        ]
    },
    {
        "child:value": "test2",
        "child:array": [
            {
                "child:subvalue": "test4"
            }
        ]
    }
]
}

json["parent:array"].forEach(function(parent) {
    console.log(parent["child:value"]);
    parent["child:array"].forEach(function(child) {
        console.log(child["child:subvalue"]);
    });
});