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

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引用。

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


Both :和空格在标识符中是允许的。 如果没有引号,这会在尝试确定标识符的确切构成时造成歧义。

链接地址: http://www.djcxy.com/p/37853.html

上一篇: in JSON, Why is each name quoted?

下一篇: YAML as a JSON superset and TAB characters