例子: 下面的代码对JSON规范有效吗?
{
precision: "zip"
}
或者我应该总是使用下面的语法?(如果有,为什么?)
{
"precision": "zip"
}
我还没有在JSON规范中找到关于这方面的东西。尽管他们在例子中用引号括键。
例子: 下面的代码对JSON规范有效吗?
{
precision: "zip"
}
或者我应该总是使用下面的语法?(如果有,为什么?)
{
"precision": "zip"
}
我还没有在JSON规范中找到关于这方面的东西。尽管他们在例子中用引号括键。
当前回答
从2.2。对象
对象结构表示为围绕零个或多个名称/值对(或成员)的一对花括号。名称是字符串。
从2.5开始。字符串
字符串以引号开始和结束。
因此,我会说,根据标准:是的,您应该始终引用键(尽管一些解析器可能更宽容)
其他回答
在你的情况下,它们都是有效的,这意味着它们都将起作用。
但是,您仍然应该在键名中使用带引号的键名,因为它更常规,这将使键名更简单,并且能够使用带有空格的键名等。
因此,请使用带引号的那个。
JSON和对象文字表示法的区别是什么?
使用字符串作为键是正确的。以下是来自RFC 4627 - JavaScript对象表示法(json)的应用程序/json媒体类型
2.2. Objects An object structure is represented as a pair of curly brackets surrounding zero or more name/value pairs (or members). A name is a string. A single colon comes after each name, separating the name from the value. A single comma separates a value from a following name. The names within an object SHOULD be unique. object = begin-object [ member *( value-separator member ) ] end-object member = string name-separator value [...] 2.5. Strings The representation of strings is similar to conventions used in the C family of programming languages. A string begins and ends with quotation marks. [...] string = quotation-mark *char quotation-mark quotation-mark = %x22 ; "
在这里阅读整个RFC。
是的,你需要引号。这是为了让它更简单,并避免为javascript保留的关键字使用另一个转义方法,例如{for:"foo"}。
从2.2。对象
对象结构表示为围绕零个或多个名称/值对(或成员)的一对花括号。名称是字符串。
从2.5开始。字符串
字符串以引号开始和结束。
因此,我会说,根据标准:是的,您应该始终引用键(尽管一些解析器可能更宽容)
是的,引号是必须的。http://json.org/表示:
string
""
" chars "