用于将json列表解析为javascript数组的JSON.parse不起作用

时间:2013-08-06 12:16:05

标签: javascript ajax json

由于这个功能,我得到了一个JSON列表:

$(document).ready(function () { 
        var idContact = @ViewData["IdPhysique"];
        var Url = "/Accueil/DonneListeFonctionContact";
        $.getJSON(Url, { IdContact: idContact }, function (data) {  

        });

});

我得到了这个JSON:

json screenshot

现在我想将JSON解析为一个数组,所以我这样做了:

$(document).ready(function () { 
        var idContact = @ViewData["IdPhysique"];
        var Url = "/Accueil/DonneListeFonctionContact";
        var data = $.getJSON(Url, { IdContact: idContact }, function (data) {  

        });
        var array = JSON.parse(data);
});

但Google开发工具中出现错误:

  

未捕获的SyntaxError:意外的令牌o

还有其他办法吗?

2 个答案:

答案 0 :(得分:4)

您不必解析它,因为jQuery会为您执行此操作并将其传递给data参数中的回调函数。 $.getJSON() 返回 JSON。所以:

 $(document).ready(function () { 
    var idContact = @ViewData["IdPhysique"];
    var Url = "/Accueil/DonneListeFonctionContact";
    $.getJSON(Url, { IdContact: idContact }, function (data) {  
        // here data is an array because jQuery already parsed the JSON
        // data.length is what you need to test
    });
 });

编辑:您在问题中显示的“JSON”响应也不是有效的JSON。属性名必须是双引号,因此必须是字符串值,因此它应该是:

[{"IdFonction":734, "LibellFonction":"Clercs"}, ...

答案 1 :(得分:0)

它已经是一个数组,因为你把它作为JSON。你不需要JSON.parse它!