JSON.parse未正确评估JSON字符串



我正在使用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详细信息)。所以,我的数据已经被缓存了。我清空了缓存,砰!一切顺利。

相关内容

  • 没有找到相关文章

最新更新