【问题标题】:Why can't I parse this json data in Google Chrome console为什么我不能在 Google Chrome 控制台中解析这个 json 数据
【发布时间】:2016-04-25 13:33:13
【问题描述】:

我在 chrome 控制台中输入这个

    var data = [
{
    "name":"john doe",
    "birth":"09/07/15"
},
{
    "name":"jane doe",
    "birth":"09/07/15"
}
];

JSON.parse([data[0]);

但我得到了错误

Uncaught SyntaxError: Unexpected token o 在 Object.parse(本机)

为什么?

【问题讨论】:

  • 因为它已经被解析(代码作为对象文字而不是 JSON 字符串传递),所以你正在尝试解析 "[objectObject]"
  • JSON.parse 接受一个字符串并吐出一个对象。您已经有了对象,只需将其与 data[0] 一起使用即可。
  • 你的意思是JSON.parse(data[0]);
  • 还有一个意想不到的[
  • 因为这不是 JSON,而是一个普通的 JavaScript 对象。

标签: javascript json google-chrome-devtools


【解决方案1】:

根据MDN docs JSON.parse()string 作为参数。

在您的示例中,您传递了一个对象——这就是您收到错误的原因。

事实上,JSON.parse() 返回一个对象,所以将对象传递给它是完全没有意义的。

【讨论】:

  • “完全没有意义”对所有潜力都过分限制。如果对象有一个自定义的toString()toJSON()(OP 没有)会发出JSON,那么JSON.parse(theObject) 可以工作,但这不是大多数情况,所以它只是“几乎没有意义”
【解决方案2】:

JSON 对象的解析函数需要一个字符串。

您可以将 JSON 对象转换为字符串,然后对其进行解析。

var data = [{
  "name":"john doe",
  "birth":"09/07/15"
},
{
  "name":"jane doe",
  "birth":"09/07/15"
}];

var object = JSON.stringify(data[0]);
JSON.parse(object);

【讨论】:

    猜你喜欢
    • 2013-09-17
    • 2014-08-13
    • 2015-03-20
    • 2012-06-20
    • 1970-01-01
    • 2018-04-15
    • 2019-02-11
    相关资源
    最近更新 更多