【问题标题】:JSON.parse not evaluating JSON strings properlyJSON.parse 未正确评估 JSON 字符串
【发布时间】:2012-01-24 22:47:55
【问题描述】:

我正在使用 JSON.parse 来解析这个 JSON 字符串

[{"created_at":"2012-01-24T22:36:21Z","name":"joe","age":42,"updated_at":"2012-01-24T22:36:21Z"}]

但是我只是得到这个结果作为输出:

[object Object]

这不应该是结果。我在卡布奇诺框架中使用它。有谁知道我在这里做错了什么?

【问题讨论】:

  • 它可能是结果,数组中的一个对象,这是正确的。尝试以某种方式对其进行调试——例如:调用 alert([{a:1}]) 警报 [object Object] 就像你得到的一样,但 console.log([{a:1}]) 向你展示一切

标签: javascript json cappuccino


【解决方案1】:

[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

DEMO


或者摆脱数组,因为它并没有真正做太多

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

【讨论】:

  • 感谢您的回答,我的错误与 JSON.parse 无关,而是因为 JSON 数据没有被另一个函数返回。
【解决方案2】:

这是一个数组,因为它在方括号中 - [] - 删除这些,它应该可以工作...... 尽管这在“语法上”是正确的,但解析器将其视为一个数组(它是一种对象),但不会按照您期望的方式对其进行处理。

也供将来参考: 尝试对其进行 lint,看看您的语法是否混乱:http://jsonlint.com/

【讨论】:

  • 只要去掉方括号就会把它变成一个对象字面量,它仍然会返回[object Object]
  • 我实际上发布了我正在解析的 JSON 字符串的简化版本(真正的字符串有数百个对象),我确实在 JSONLint 和 jsonformatter.curiousconcept.com 上验证了它(一个更好的验证器 IMO )
  • 啊,我也喜欢那个。 Sooo 我有时会遇到一个奇怪的错误,你必须先确保它是一个字符串,比如 Adam Ricks Answered。
猜你喜欢
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多