var text = '[{"created_at":"2012-01-24T22:36:21Z","name":"joe","age":42,"updated_at":"2012-01-24T22:36:21Z"}]';
var obj = JSON.parse(text);
alert(obj[0].name); //alerts joe
var text = '{"created_at":"2012-01-24T22:36:21Z","name":"joe","age":42,"updated_at":"2012-01-24T22:36:21Z"}';
var obj = JSON.parse(text);
alert(obj.name); //still joe
3条答案
按热度按时间zazmityj1#
[object Object]
是在对象上调用toString
时对象所显示的内容。看起来像是在获取结果并试图调用obj.toString()
另外,JSON是一个只有一个元素的数组,因此要验证结果是否正确,可以访问[0]索引上的name属性:
DEMO
或者去掉数组,因为它实际上没有做什么
DEMO
kninwzqo2#
这是一个数组,因为它在方括号- [] -删除这些,它应该工作...即使这是'语法'正确的解析器认为这是一个数组(这是一种类型的对象),但不会做的工作,它的方式,你会期望。
另供将来参考:尝试lint它,看看语法是否混乱:http://jsonlint.com/
5lhxktic3#
这是一个古老的主题,但尽管如此,我还是花了几个小时试图弄清楚到底发生了什么。所以,希望这能在未来帮助到其他人。
我的问题是建立一个简单 AJAX 调用,并对来自所说的ajax调用的结果集做一些事情,然而,无论我做什么,我都无法将json结果集获取到一个对象。
我在调试器窗口中完成了所有的步骤,注意到不再活跃的旧代码出现在侧边栏(dom细节),所以,我的数据已经被缓存了,我清除该高速缓存,砰!一切都正常了。