2013-08-06 138 views
0

我得到一個JSON清單感謝這個功能:JSON.parse解析一個JSON清單JavaScript數組不起作用

$(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開發工具中的耳朵:

Uncaught SyntaxError: Unexpected token o

還有其他方法可以做到嗎?

+0

你想用返回的JSON做什麼?像顯示在列表視圖等? – Akki619

回答

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"}, ... 
+0

您是否努力爭取超過最小尺寸限制? –

+0

哦好吧,我不知道,但如果我不解析它到一個數組中,我怎麼能得到列表的長度? –

+1

@HubertSolecki'data.length'; 'data'已經是你想要的數組了 –

0

它已經是一個數組,因爲您將它作爲JSON獲取。你不需要JSON.parse它!

+0

這不正是nnnnnn剛纔所說的嗎? –

+0

@JanDvorak對不起,我沒有注意到,因爲我正在編輯而nnnnnn發佈它! –