【问题标题】:Why does JSON.parse('{"key" : "value"}') do just fine but JSON.parse('{key : "value"}') doesn't?为什么 JSON.parse('{"key" : "value"}') 做得很好,但 JSON.parse('{key : "value"}') 不行?
【发布时间】:2011-10-25 00:20:31
【问题描述】:

从节点 REPL:

> JSON.parse('{"key" : "value"}')
{ key: 'value' }
> JSON.parse('{key : "value"}')
SyntaxError: Unexpected token ILLEGAL
    at Object.parse (native)
    at [object Context]:1:6
    at Interface.<anonymous> (repl.js:171:22)
        at Interface.emit (events.js:64:17)
    at Interface._onLine (readline.js:153:10)
    at Interface._line (readline.js:408:8)
    at Interface._ttyWrite (readline.js:585:14)
    at ReadStream.<anonymous> (readline.js:73:12)
    at ReadStream.emit (events.js:81:20)
    at ReadStream._emitKey (tty_posix.js:307:10)

【问题讨论】:

    标签: javascript json node.js


    【解决方案1】:

    JSON 中的所有键都是字符串,所有字符串都用双引号分隔。

    JavaScript 允许您使用不同的字符来分隔字符串,它允许您使用标识符作为对象文字中的键——但 JSON 不是 JavaScript。

    【讨论】:

    • +1。另外,如果您想检查某些内容是否是有效的 json,您可以使用验证器,例如 jsonlint.com
    【解决方案2】:

    JSON 要求键和值都是字符串。

    http://www.json.org/js.html

    【讨论】:

    • 值实际上不必是字符串。它们可以是布尔值、数字等,但键必须是字符串。
    【解决方案3】:

    因为您的第二个示例不是 JSON。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-18
      • 2016-01-11
      • 2011-05-16
      • 1970-01-01
      • 2013-06-24
      • 1970-01-01
      • 1970-01-01
      • 2015-07-22
      相关资源
      最近更新 更多