JSON/Javascript对象文字语法
以下选项与首选选项之间的区别是什么 选项1JSON/Javascript对象文字语法,javascript,Javascript,以下选项与首选选项之间的区别是什么 选项1 var object = { 'propertyName':'propertyValue' } 选项2 var object = { "propertyName":"propertyValue" } 选项3 var object = { propertyName:'propertyValue' } 我意识到选项2是真正的JSON语法。这些都不是JSON。它们都是不同版本的JavaScript代码,使用JavaScript的
var object = {
'propertyName':'propertyValue'
}
选项2
var object = {
"propertyName":"propertyValue"
}
选项3
var object = {
propertyName:'propertyValue'
}
我意识到选项2是真正的JSON语法。这些都不是JSON。它们都是不同版本的JavaScript代码,使用JavaScript的文本语法创建对象。所有这些都可以实现相同的功能(取决于属性名称中使用的字符或关键字),选择哪一个取决于您(尽管您应该保持一致) JSON是一种独立于平台的序列化方案,用于在平台/环境/进程之间传输数据。它的语法由JavaScript文字语法的子集组成。JSON总是一个字符串 在前者,这是你的选择。在JSON中,规范非常清楚,在编写JSON时将使用第二个示例中使用的样式(尽管第二个示例实际上不是JSON)。JSON序列化这些变量中的任何一个都会产生以下字符串:
{"propertyName": "propertyValue"}
在任何支持JSON的平台上都是如此。它们在Javascript中都是等价的 Javascript在编写字符串时不区分使用单引号和双引号 在指定对象文字的键时,如果它不是有效标识符,或者是保留关键字,则需要引用它。否则,您可以使用引号将其写为字符串 偏好是一个个人风格的问题。大多数程序都是使用最后一种语法编写的,但有时会遇到问题。例如,Internet Explorer拒绝使用
class:“value”
作为语法错误,因为class
是一个保留字,所以需要引用它。我在使用jQuery创建元素时经常遇到这个问题,例如
$("<div>" {
id: "foo",
class: "fooClass"
});
$(“”{
id:“foo”,
类别:“fooClass”
});
将在IE中导致错误。如果JavaScript代码在浏览器中运行,则没有区别 “首选”语法在很大程度上是一种观点,但我经常看到属性名称没有引号 在JSON中定义对象时,使用引号确实允许在属性名称中使用非字母数字字符:
var config = {
"foo.url": "/foo",
"foo.timeout": 3000,
"foo^10": 100
};
config["foo.url"];
我以前在一个配置对象中使用过它,在这个配置对象中,我不希望有深度嵌套的属性,但我确实希望在属性名中使用sudo名称空间方案。这些语法之间没有任何区别。如果在javascript中使用,您可以自由地使用其中任何一个 JSON有点不同,它是跨平台的对象文字。程序员错误地不创建errorfull代码,这就是为什么它的语法严格使用“键的引号” 所以没有引用
{ "i-name" : "Some value" }
这将是完全错误的,因为其中包含连字符。Hm,无论您的团队喜欢哪种编码风格。第三种方式允许您使用有限的字符集作为键,因为它需要限定为标识符。否则,由您决定。这很难回答。一种是JSON,它与JavaScript无关。另一种是JavaScript对象文字l语法。首选的是基于意见的。如果您使用JavaScript,则无需编写JSON,除非您将其传输到其他源。