【问题标题】:JSON.parse: unexpected character -- Syntax is correct, data type is stringJSON.parse: 意外字符 -- 语法正确,数据类型为字符串
【发布时间】:2017-01-07 10:48:37
【问题描述】:

我完全感到困惑。尝试JSON.parse() 时出现异常:

{"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"}

异常报告的确切错误是:

JSON.parse:JSON 数据的第 1 行第 1 列出现意外字符

根据 JSONLint,字符串语法是正确的。我也确认了数据类型是字符串。

什么可能导致异常?

【问题讨论】:

  • 如果你传递给JSON.parse 的东西真的是一个字符串,而且这些真的是它的内容,你就不会得到那个错误。 (除非你用非标准的东西替换了JSON.parse,你可能没有。)用minimal reproducible example 更新问题,我们实际上可以看到它证明了问题。
  • 您确定JSON.parse 的输入是string 而不是JSON 对象吗?
  • 嘿,您的输入是对象,这就是您收到错误的原因
  • @KarthikVU 请不要继续使用“JSON 对象”这种令人困惑和不正确的用法。无论如何,他已经说过它一个字符串。

标签: javascript json


【解决方案1】:

也许你忘了引用字符串?

console.log(JSON.parse('{"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"}'))

省略引号将产生一个对象字面量:

console.log({"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"})

【讨论】:

    【解决方案2】:

    您可能是按字面意思分配该值,这是一个对象而不是字符串,所以:

    var invalidJSON = {"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"};
    
    var validJSON = '{"result":0,"extra":"2a9e10ecdeb8e65165c8635d51fd6b8f6fa7c10e951167a093ac1621e81dd7e8"}';
    

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 2012-03-30
      • 2014-09-08
      • 1970-01-01
      • 2017-12-31
      • 2013-06-02
      • 2012-01-21
      相关资源
      最近更新 更多