{ precision: "zip" }
或者我应该总是使用下面的语法?(如果有,为什么?)
{ "precision": "zip" }
我还没有在JSON规范中找到关于这方面的东西。尽管他们在例子中用引号括键。
是的,引号是必须的。http://json.org/说:
string "" " chars "
是的,你需要引号。这是为了让它更简单,并避免为javascript保留的关键字使用另一个转义方法,即{for:"foo"}。
{for:"foo"}
使用字符串作为键是正确的。下面是用于JavaScript对象表示法(json)的application/json媒体类型的节选
2.2. 对象 对象结构用一对花括号表示 包围零个或多个名称/值对(或成员)。名称为A 字符串> < /强。每个名称后面都有一个冒号,分隔名称 从值。一个逗号将值与后面的字符分隔开 的名字。一个对象中的名称必须是唯一的 object = begin-object [ member *( value-separator member ) ] end-object member = string name-separator value […] 2.5. 字符串 字符串的表示类似于C . bb0中使用的约定 编程语言家族。字符串以…开始和结束 引号。[…]< / p > string = quotation-mark *char quotation-mark quotation-mark = %x22 ; "
2.2. 对象
object = begin-object [ member *( value-separator member ) ] end-object
member = string name-separator value
[…]
2.5. 字符串
string = quotation-mark *char quotation-mark
quotation-mark = %x22 ; "
阅读整个RFC 在这里。
从2.2. 对象
对象结构表示为围绕零个或多个名称/值对(或成员)的一对花括号。名称是字符串。
和2.5. 字符串
字符串以引号开始和结束。
因此,我会说,根据标准:是的,您应该始终引用键(尽管一些解析器可能更宽容)
既然你可以把"parent. "你不必写parent["child"],这也是有效和有用的,我想说两种方法在技术上都是可以接受的。解析器都可以以两种方式正常工作。如果您的解析器不需要在键上加引号,那么最好不要加引号(节省空间)。称它们为字符串是有意义的,因为它们就是这样,由于方括号让你能够使用值作为键,本质上它完全有意义不这样做。 在Json中,你可以放入…
>var keyName = "someKey"; >var obj = {[keyName]:"someValue"}; >obj Object {someKey: "someValue"}
这很好,没有问题,如果你需要一个键的值,没有引号是行不通的,所以如果它没有,你不能,所以你不会所以“你不需要对键加引号”。即使严格来说它们是字符串。逻辑和用法却不这么认为。它也没有正式输出Object {"someKey": "someValue"},在我们的例子中,从任何浏览器的控制台运行的obj。
是的,他们有。但如果需要其他方法,则签出JSON5。
JSON5是JSON的超集,允许使用ES5语法,包括:
JSON5引用实现(json5 npm包)提供了一个JSON5对象,该对象具有parse和stringify方法,其参数和语义与内置的JSON对象相同。
json5
JSON5
parse
stringify
JSON
在你的情况下,它们都是有效的,这意味着它们都将起作用。
然而,你仍然应该在键名中使用带引号的键名,因为它更像传统的,这使得键名更简单,也更能使用空格等。
因此,请使用带引号的那个。
编辑//检查这个:JSON和对象文字表示法的区别是什么?