我正在使用JSON.parse来解析这个JSON字符串
[{"created_at":"2012-01-24T22:36:21Z","name":"joe","age":42,"updated_at":"2012-01-24T22:36:21Z"}]
然而,我只是得到了这个结果作为输出:
[object Object]
这不应该是结果。我在卡布奇诺框架中使用这个。有人知道我在这里做错了什么吗?
[object Object]
是在对象上调用toString
时显示的对象。看起来你正在拿你的结果,并试图调用obj.toString()
此外,您的JSON是一个包含一个元素的数组,因此为了验证结果是否正确,您可以访问[0]索引上的name属性:
obj[0].name // should be "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[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
DEMO
这是一个数组,因为它在方括号中-[]-删除这些,它应该可以工作。。。即使这在"语法上"是正确的,解析器也会将其视为一个数组(这是一种对象类型),但不会按照您期望的方式对其进行处理。
也可供将来参考:试着把它整理一下,看看你的语法是否一团糟:http://jsonlint.com/
这是一个老话题,但尽管如此,我还是花了几个小时试图弄清楚发生了什么。所以,希望这能在未来帮助其他人。
我的问题是设置一个简单的ajax调用,并对所述ajax调用的结果集执行一些操作。然而,无论我做了什么,我都无法将json结果集获取到对象。
我最终浏览了调试器窗口中的所有内容,并注意到不再活动的旧代码显示在侧边栏上(dom详细信息)。所以,我的数据已经被缓存了。我清空了缓存,砰!一切顺利。