例子: 下面的代码对JSON规范有效吗?
{
precision: "zip"
}
或者我应该总是使用下面的语法?(如果有,为什么?)
{
"precision": "zip"
}
我还没有在JSON规范中找到关于这方面的东西。尽管他们在例子中用引号括键。
例子: 下面的代码对JSON规范有效吗?
{
precision: "zip"
}
或者我应该总是使用下面的语法?(如果有,为什么?)
{
"precision": "zip"
}
我还没有在JSON规范中找到关于这方面的东西。尽管他们在例子中用引号括键。
当前回答
是的,你需要引号。这是为了让它更简单,并避免为javascript保留的关键字使用另一个转义方法,例如{for:"foo"}。
其他回答
从2.2。对象
对象结构表示为围绕零个或多个名称/值对(或成员)的一对花括号。名称是字符串。
从2.5开始。字符串
字符串以引号开始和结束。
因此,我会说,根据标准:是的,您应该始终引用键(尽管一些解析器可能更宽容)
是的,你需要引号。这是为了让它更简单,并避免为javascript保留的关键字使用另一个转义方法,例如{for:"foo"}。
如果使用JSON5就不会
对于常规JSON, yes键必须被引用。但如果你需要其他的,签出广泛使用的JSON5,之所以这样命名是因为它是JSON的超集,允许ES5语法,包括:
不带引号的属性键 单引号,转义和多行字符串 备选号码格式 评论 多余的空格
JSON5引用实现(JSON5 npm包)提供了一个JSON5对象,该对象具有与内置JSON对象相同的参数和语义的parse和stringify方法。
被许多高知名度的项目广泛使用和依赖
JSON5开始于2012年,截至2022年,现在每周有6500万次下载,在npm最依赖的包中排名前0.1%,并已被诸如Chromium, Next.js, Babel, Retool, WebStorm等主要项目采用。它在MacOS和iOS等苹果平台上也有原生支持。 ~ json5.org主页
在你的情况下,它们都是有效的,这意味着它们都将起作用。
但是,您仍然应该在键名中使用带引号的键名,因为它更常规,这将使键名更简单,并且能够使用带有空格的键名等。
因此,请使用带引号的那个。
JSON和对象文字表示法的区别是什么?
是的,引号是必须的。http://json.org/表示:
string
""
" chars "