2011-12-13 136 views
0

我以JSON/Ajax開發與Javascript開始,現在我有一個場景,我從服務器接收JSON字符串,我想建立一個對象客戶端。 我的服務器的輸出是這樣的:Javascript - 如何訪問JSON數組對象

[{"username":"user","mine":"[{"id":"1","artist":"Pearl Jam","name":"Rival"},{"id":"2","artist":"Pearl Jam","name":"Lukin"}]","default":"50"}] 

在JS方面我這樣做:

$.getJSON('?action=load', 
     function(data) 
     { 

       window.User = data[0]; 
     }); 

我可以打印window.User.usernamewindow.User.default。然而,我期待着我可以做類似alert(window.User.mine[0].id)的東西,但它打印[(歌曲數組的第一個字符,所以我假設它被解釋爲一個字符串)。 我在做什麼錯在這裏?

非常感謝。

回答

2
"[{"id":"1","artist":"Pearl Jam","name":"Rival"},{"id":"2","artist":"Pearl Jam","name":"Lukin"}]" 

應該是這個

[{"id":"1","artist":"Pearl Jam","name":"Rival"},{"id":"2","artist":"Pearl Jam","name":"Lukin"}] 

陣列周圍的報價讓他們字符串

2

你的JSON格式不正確,所以你得到一個字符串而不是數組,這就是原因。

你的JSON應該是這樣的:

[{"username":"user","mine":[{"id":"1","artist":"Pearl Jam","name":"Rival"},{"id":"2","artist":"Pearl Jam","name":"Lukin"}],"default":"50"}] 

,然後你會得到預期的結果

+0

嗯,是的,這的確是 – fge 2011-12-13 19:01:02

+0

@fge(固定你的JSON的建議後...):即使是語法高亮同意對;) – hugomg 2011-12-13 19:02:50

0

用途:

window.User.mine.[0].id