我知道如何从JSON对象访问键值对,但在我的情况下,资源包键被映射到值。
e.g。
var json = {"label.name.first":"foo","label.name.second":"bar"};
这里 json.label.name.first 不会给我“foo”。
有人可以帮我这个吗?
答案 0 :(得分:3)
由于在密钥名称中使用句点字符(.
),您需要使用[]
表示法来访问其值。
console.log( json['label.name.first'] );
此外,您有一个JavaScript对象,而不是JSON。
JavaScript对象或JSON之间的区别在于JSON始终是一个字符串。其次,JavaScript对象在密钥名称上不需要相同的引用标准。
如果您只考虑下面的字符串,那么可以考虑JSON(这就是为什么如果将它粘贴到JSON解析器中,它会告诉您它是有效的JSON):
{"label.name.first":"foo","label.name.second":"bar"}
但是,如果将其直接分配给JavaScript变量,那么您将拥有JavaScript对象文字,而不是JSON。这是因为当JSON不包含在字符串中时,它也是一个有效的JavaScript对象/数组文字:
var obj = {"label.name.first":"foo","label.name.second":"bar"};
如果你将它用作字符串,则它是JSON:
var json = '{"label.name.first":"foo","label.name.second":"bar"}';
// json is a string, so it's JSON
var obj = JSON.parse(json); // parse the JSON into an object
混淆是常见的,因为JSON格式与JavaScript对象和数组文字的格式非常相似。
答案 1 :(得分:1)
这样做:
json["label.name.first"]
但是,我认为你误解了.
符号。
顺便说一句,你的json不是JSON,它是一个javascript对象而不是它的符号。
答案 2 :(得分:1)
json["label.name.first"]
会让你"foo"
。由于您的属性名称包含不能在变量名中使用的字符。
如果您希望使用语法json.label.name.first
访问这些属性,那么您的JSON必须是:
var json = {
"label":{
"name":{
"first":"foo",
"second":"bar"
}
}
}
答案 3 :(得分:0)
这不是创建对象的正确方法,你应该创建一个这样的方法。
var json={"label":{"name":{"first":"foo","second":"bar"}}};
它也可以用作json字符串