在JSON中,为什么引用每个名称?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

JSON规范说JSON是一个对象或一个数组。在物体的情况下,

对象结构被表示为围绕零个或多个名称/值对(或成员)的一对大括号。 名称是一个字符串。 ...

后来,规范说明了一个字符串被引号括起来。

为什么?

从而,

{"Property1":"Value1","Property2":18}

并不是

{Property1:"Value1",Property2:18}

问题1:为什么不让名称/值对中的名称成为不带引号的标识符?

问题2:在Javascript中进行评估时,上述两种表示之间是否存在语义差异?

提问于
用户回答回答于

问题1:为什么不让名称/值对中的名称成为不带引号的标识符?

JSON的设计理念是“保持简单”

“引用姓名"“你可以用名字引用"'但不必,除非它们包含某些字符(或将其作为关键字的字符组合),'或者"可能需要引用在你选择的分隔符上“

问题2:在Javascript中进行评估时,上述两种表示之间是否存在语义差异?

在JavaScript中它们是相同的。

用户回答回答于

我在Douglas Crockford(JSON标准的创建者)给雅虎的演讲中留下了一段引文。

他谈到了他如何发现 JSON,以及为什么他决定使用带引号的键

....那是当我们发现没有引号的名字问题。事实证明,ECMA脚本3有一个重击保留字策略。保留字必须在关键位置引用,这实际上是一个麻烦。当我将这个标准化时,我不想把所有的保留字都放在标准中,因为它看起来很愚蠢。 当时,我试图说服人们:是的,你可以使用JavaScript编写应用程序,它实际上会起作用,并且它是一种很好的语言。然后,我不想同时说:看看他们做的这件非常愚蠢的事情!所以我决定,而是让我们引用关键字。 那样的话,我们不必告诉任何人这是多么的糟糕。 这就是为什么直到今天,密钥都以JSON引用。

你可以在这里找到完整的视频和成绩单。

扫码关注云+社区