使用时访问JSON对象的原因是什么。给出错误,但使用[]它有效吗?访问JSON对象键的正确语法是什么?
此语法提供错误:
var obj2G = obj.2G;
这种语法有效,但为什么需要以这种方式访问?
var obj2G = obj [“2G”];
var obj = {
"2G": [{
"essid": "SINGTEL-662F",
"authmode": "psk psk2",
"authkey": "0000026159",
"isEnable": "1",
"isHidden": "0",
"hwaddr": "E0:8E:3C:00:66:30",
"opmode": "ap"
}, {
"essid": "GUEST1-662F",
"authmode": "psk psk2",
"authkey": "aabbccddee",
"isEnable": "0",
"isHidden": "0",
"hwaddr": "",
"opmode": "ap"
}, {
"essid": "GUEST2-662F",
"authmode": "psk psk2",
"authkey": "aabbccddee",
"isEnable": "0",
"isHidden": "0",
"hwaddr": "",
"opmode": "ap"
}, {
"essid": "GUEST3-662F",
"authmode": "psk psk2",
"authkey": "aabbccddee",
"isEnable": "0",
"isHidden": "0",
"hwaddr": "62:8E:3C:00:66:33",
"opmode": "ap"
}],
"5G": [{
"essid": "SINGTEL-662F(5G)",
"authmode": "psk psk2",
"authkey": "0000026159",
"isEnable": "1",
"isHidden": "0",
"hwaddr": "E0:8E:3C:00:66:31",
"opmode": "ap"
}, {
"essid": "GUEST1(5G)-662F",
"authmode": "psk psk2",
"authkey": "aabbccddee",
"isEnable": "0",
"isHidden": "0",
"hwaddr": "6a:8e:3c:00:66:32",
"opmode": "ap"
}, {
"essid": "GUEST2(5G)-662F",
"authmode": "psk psk2",
"authkey": "aabbccddee",
"isEnable": "0",
"isHidden": "0",
"hwaddr": "",
"opmode": "ap"
}, {
"essid": "GUEST3(5G)-662F",
"authmode": "psk psk2",
"authkey": "aabbccddee",
"isEnable": "0",
"isHidden": "0",
"hwaddr": "6a:8e:3c:00:66:30",
"opmode": "ap"
}]
}
obj2G = obj["2G"];
console.log(obj2G);
obj2G = obj.2G;
console.log(obj2G);
答案 0 :(得分:2)
在点表示法中使用时,对象属性必须以字母开头。这只是Javascript中的规则。您可以按字面'*&^'
命名属性,但必须通过[]
表示法进行命名。
2G
以数字开头,因此需要[]
符号。
答案 1 :(得分:2)
如果使用点符号:
属性必须是有效的JavaScript标识符,即一系列字母数字字符,也包括下划线(“_”)和美元符号(“$”),它们不能以数字开头。例如,object。$ 1有效,而object.1不是。
在这种情况下,您必须使用括号表示法:
property_name是一个字符串。该字符串不必是有效的标识符;它可以有任何价值,例如“1foo”,“!bar!”,甚至是“”(空格)。
请参阅文档:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors
值得一提的是,如果要使用变量访问属性,则必须使用括号表示法。例如:
var myName = "foo";
var myObject = { foo: 42};
console.log(myObject.myName);//returns undefined
可是:
var myName = "foo";
var myObject = { foo: 42};
console.log(myObject[myName]);//returns 42
答案 2 :(得分:1)
从文档到Property Accessor的点符号:
在此代码中,属性必须是有效的JavaScript标识符,即一系列字母数字字符,也包括下划线(“_”)和美元符号(“$”),它们不能以数字开头。例如,object。$ 1有效,而object.1不是。
JavaScript标识符必须以字母,下划线(_)或美元符号($)开头;后续字符也可以是数字(0-9)。由于JavaScript区分大小写,因此字母包括字符“A”到“Z”(大写)和字符“a”到“z”(小写)。
结果是,不能使用带有起始编号的点符号的变量或属性。