基本上,我试图通过向JSON.parse()提供一个字符串来创建这样的对象:
a = {x:1}
// -> Object {x: 1}
直觉上我试过了:
a = JSON.parse('{x:1}')
// -> Uncaught SyntaxError: Unexpected token x
经过一番摆弄,我发现了:
a = JSON.parse('{"x":1}')
// -> Object {x: 1}
但后来我意外地改变了语法和奖金混乱:
a = JSON.parse("{'x':1}")
//-> Uncaught SyntaxError: Unexpected token '
所以现在我正在寻找解释原因
答案 0 :(得分:0)
正如评论中所指出的那样,因为这是JSON规范指定的内容。 AFAIK的原因是JSON意味着是数据交换格式(语言不可知)。许多语言,甚至那些具有散列字符的语言,都不允许不带引号的字符串作为哈希表键。
答案 1 :(得分:0)
混淆的主要原因似乎是JSON和JavaScript对象之间的区别。
JSON (JavaScript Object Notation)是一种数据格式,旨在以简单的格式进行数据交换。这就是为什么只有一个有效语法的原因。它使解析更容易。您可以在JSON website找到更多信息。
关于JSON的一些注释:
"
"
JavaScript objects与JSON(显然)相关,但不完全相同。有效的JSON也是一个有效的JavaScript对象。然而,另一种方式却不是。
例如:
"
或'