2013-02-14 56 views
2

我通過jQuery $.getJSON(url, function(data) { ... 得到一個JSON文件,並希望與解析,要麼JSON.parse()來不工作jQuery的數據對象

var obj = JSON.parse(data); 

var obj = jQuery.parseJSON(data); 

第一行給我「語法錯誤」(使用IE8,應支持JSON.parse),第二個給我「'中心'爲空或不是對象」。

這是我使用的有效的JSON文件:

{ 
"center":{"lat":"51.99637","lon":"13.07520"}, 
"locations": 
[ 
    { "name":"a string","info":"another string" }, 
    ... some more here ... 
] 
} 

我不是太熟悉JavaScript。我究竟做錯了什麼?

如果我使用一個簡單的JSON數組(僅僅是位置的內容),我可以用$.each得到有效的數據。 在使用JSON.parse之前,我是否必須對數據做些什麼?

回答

5

問題是該函數的名稱有點誤導:它不會給你JSON,但已經解析的對象。它的作用是獲取一些JSON併爲你解析它。

data是一個普通的javascript對象,你不需要解析它。

+0

也許應該是'JSON.parseFromString' – 2013-02-14 15:39:07

+0

我建議重命名功能'$ .fetchSomeJSONAndParseItForMePlease = $ .getJSON;' – 2013-02-14 15:40:32

+0

考慮當有人稱某個JavaScript對象爲「JSON」時,人們看起來有多憤怒,你會想更多的人會將jQuery方法名稱改爲'$ .getJavaScriptDataStructure' – 2013-02-14 15:42:43

2

$ .getJSON會爲你解析數據 - 你不需要在事後手動解析它。

0

你可以嘗試像

var object = {} 
object.text = "Hello World!" 

var json = JSON.stringify(object) 
alert(json) 

var object = JSON && JSON.parse(json) || $.parseJSON(json) 
alert(object.text) 

Jsfiddle link