2013-09-22 85 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);