2013-09-22 86 views
0

我一直在努力應用簡單的幾行Javascript代碼。我已將我的JSON字符串減少到了以後發現的字符串。以下代碼中的第一條警報會生成以下消息:閱讀JSON消息的值

{「list」:[{「text」:「Text1」,「created_at」:「Date1」},{「text」:「Text2」 created_at「:」日期2" }]}

然而,第二警報生成IE以下錯誤: 錯誤:無法獲得屬性的值‘0’:對象爲空或未定義

var data = "{\"list\":[{\"text\":\"Text1\", \"created_at\":\"Date1\"},{\"text\":\"Text2\", \"created_at\":\"Date2\"}]}"; 
alert(data); 
alert(data.list[0].created_at); 

任何人都不明白爲什麼我收到此錯誤?

回答

3

data是一個普通的字符串;它沒有任何屬性。

你想在字符串中的JSON解析成一個JavaScript對象:

var obj = JSON.parse(data); 
+0

謝謝。我最初是按照你的建議解析字符串,但是卻得到了另一個錯誤。因此,我在後面的鏈接中找到了下面的答案,這似乎表明了相反的意思,因此完全刪除了解析。 http://stackoverflow.com/questions/14265929/unable-to-solve-error-uncaught-syntaxerror-unexpected-token-o 我想我沒有正確解釋這個答案。我相信我最初的錯誤與JSON對象本身的格式有關。 再次感謝您。 – JF0001

+0

@ JF0001:這聽起來像你在對象上調用'JSON.parse()',而不是字符串。 – SLaks

1

您在使用使用JSON格式的字符串,但不JSON本身。

你應該使用這樣的:

var data = {"list":[{"text":"Text1", "created_at":"Date1"},{"text":"Text2", "created_at":"Date2"}]}; 
alert(data.list[0].created_at); 

或使用:

var jsonData = JSON.parse(data); 
alert(jsonData.list[0].created_at);