^如何解析从服务器收到的多个JSON数组?

时间:2015-06-25 08:22:20

标签: javascript jquery ajax json

这是我从服务器收到的Json数据:

[
     {"Name":"A"}, 
     {"Name":"B"},
     {"Name":"C"},
     {"Name":null}
]
[
     {"Name":null},
     {"Name":"D"},
     {"Name":null}
]
[ 
     {...},
     {...}
]

如何在AJAX成功属性中使用JQUERY解析它?

这是我的Ajax代码:

$.ajax({    
    url: '#.php',
    type: 'post',
    async: false,
    data: {},
    dataType: 'json',
    success: function(data){
        var str = JSON.stringify(data);
        var obj = JSON.parse(str);

        for(var i=0; i< data.length;i++)
        {
            alert(data[i].Name);
        }
    },
    complete: function(xhr,status){
        alert(status);
    },
    error: function(xhr){
        alert("An error occured: " + xhr.status + " " + xhr.statusText );
        alert("An error occured. Please Try Again");
    }
})

此代码无法正常工作,并且在完成时会出现解析器错误。 我想显示收到的所有姓名。 请帮助。

2 个答案:

答案 0 :(得分:2)

从服务器收到的数据是无效的JSON,如果是,那就是  类似的东西:

[
    [{
        "Name": "A"
    }, {
        "Name": "B"
    }, {
        "Name": "C"
    }, {
        "Name": null
    }],
    [{
        "Name": null
    }, {
        "Name": "D"
    }, {
        "Name": null
    }]
]

更容易解析:

[{
    "Name": "A"
}, {
    "Name": "B"
}, {
    "Name": "C"
}, {
    "Name": null
}, {
    "Name": null
}, {
    "Name": "D"
}, {
    "Name": null
}]

答案 1 :(得分:1)

服务器返回的数据不符合JSON语法。 为了拥有合适的JSON结构,应该只有一个父对象而不是多个数组。

如果您可以修改服务器的输出,请考虑以下备选方案:

创建父数组:

[ your_arrays ]

然后访问data[0]以检索success函数中的数组。

创建父对象:

{myArrays : your_arrays}

然后访问data.myArrays函数中的success