为什么JSON.parse('{“key”:“value”}')做得不错,但JSON.parse('{key:“value”}“)不?

从节点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) 

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

JavaScript允许你使用不同的字符来分隔string,它允许你在对象字面量中使用标识符作为键 – 但是JSON不是JavaScript。

JSON期望键和值都是string。

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

因为你的第二个例子不是JSON。