2013-09-24 37 views
6

我有這個JSONJSON.parse未捕獲的SyntaxError:意外的標記Ø

var data = [{ 
    "ID":1,"Name":"Test", 
    "subitem": [ 
     {"idenID":1,"Code":"254630"}, 
     {"idenID":2,"Code":"4566"}, 
     {"idenID":3,"Code":"4566"} 
    ] 
}]; 

console.log(JSON.parse(data)); //Uncaught SyntaxError: Unexpected token o 

如何反序列data JavaScript對象。

+3

你在這裏是什麼[JavaScript的文字(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Values,_variables ,_and_literals#文本)。他們的語法正是JSON得到它的地方。但是,在JavaScript代碼中,JSON總是被格式化的數據存儲在'String'中,這是'JSON.parse()'所期望的數據類型。 –

回答

12

它已經是一個對象...類型Array。要訪問Object

var foo = data[0]; 

alert(foo.ID); 

JSON.parse需要String並將其解析爲等效的JavaScript值。

2

這可以在Javascript中使用。當你的數據是字符串格式時,你需要解析JSON,並從服務器端獲取它。

JSON.parse的目的是轉換爲Javascipt對象表示法來使用它。例如,

var str = "{"a":1,"b":2}"; 
var obj = JSON.parse(str); //obj = {a:1, b:2} 

參考MDN

+0

從技術上講,JSON.parse將*從* JavaScript Object Notation轉換爲本地對象。 –

+0

@Colin你能解釋一下嗎?根據MDN的說法,「將字符串解析爲JSON,可選地轉換解析產生的值。」 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse – KhanSharp

+1

@Khan:我想他在說的是'JSON.parse'將包含JSON的字符串解析爲JavaScript對象,只有前者被稱爲JSON,而不是後者。 – icktoofay

相關問題