有没有提议修改JSON以正式允许不带引号的属性名称?

时间:2009-12-08 16:53:45

标签: javascript json standards

以下是技术上无效的JSON:

{
  color: "blue",
  size: 14
}

因为要引用的规范要求属性名称“颜色”和“大小”,即

{
  "color": "blue",
  "size": 14
}

但是,我注意到许多声称返回“JSON”的Web服务没有引用它们的属性名称,几乎没有人编写Javascript会引用它们的属性名称,因为Javascript不需要它。

是否有任何建议要修改或分叉JSON以允许不带引号的属性名称?这似乎是一种更自然的使用格式的方式,但我从未见过任何暗示它应该被正式采用的东西。

3 个答案:

答案 0 :(得分:4)

JSON的设计理念似乎是尽可能简单

“用双引号换行属性名称”beats“用双引号或单引号换行属性名称,除非名称包含空格或其他特殊字符,否则可以保留引号”,以简化。

我认为这不太可能改变。

现在我要在关于HTML5设计理念的咆哮之前停下来。

答案 1 :(得分:2)

我遇到了与JavaScript保留字冲突的属性名称。在遇到几个这样的问题之后,当我有选择权时,我会严格引用我的JSON。在我看来,它更安全。

答案 2 :(得分:1)

不,我怀疑这会发生。如果您使用声称返回JSON但无效的Web服务,请与他们联系。你没有修改规范,因为人们错误地实现了它。

在这里,我们不要串通我们的条款。是的,JSON名称中包含“JavaScript”,但很清楚 - JSON 不是 Javascript。

在你跳过我之前说“但是在json.org网站上它说JSON is a subset of JavaScript” - 是的,我知道。

是的,从技术上讲它的JavaScript,但由于格式是a)严格声明和b)在JavaScript的上下文之外可用,所以最好用它的心态对待它不是 JavaScript。它只是一种数据格式,也恰好是原生JavaScript。

这就是为什么你注意到“JavaScript不需要它”的原因。嗯,那是因为JavaScript没有,但是JSON 确实。这也是为什么我更喜欢将JSON称为“JavaScript,但不是真的”。