问题很简单。每次我手动编写JSON时,它都会让我感到困惑,例如一个REST调用。
为什么引用JSON中的属性名称?为什么我不能写
{
foo: "bar"
}
但必须写
{
"foo": "bar"
}
在JSON.org你的节目中,属性名称必须是字符串,但这不能回答这个问题。
我认为这特别令人困惑,因为JSON总是被提升为超级轻量级,并且与XML相比开销要少得多(例如here),但是当他们从未决定属性名称时,它的开销会更少必须引用?
此外,它更像是字典的Javascript语法(jeah,Objects what),因为这两种方式都是允许的。
我能看到的唯一缺点是你不能使用XML样式的命名空间,如:
{
"foo:bar": "baz"
}
但又一次,为什么要这么麻烦?无论如何,你无法在json中真正命名这样的命名空间。
我不想用引号说它应该是无效的,但我认为如果它们是可选的,因为99%的时间(除了你将xml转换为json)你不需要它更有意义它们会节省一些字节。此外, J ava s crpt O bject N otation将更接近于表示对象的方式在Javascript中。
任何人都可以对这个设计决定的原因进行有根据的猜测吗?