访问JSON对象以获取Resource Bundle键/值对

时间:2014-04-14 10:16:38

标签: javascript json

我知道如何从JSON对象访问键值对,但在我的情况下,资源包键被映射到值。

e.g。

var json = {"label.name.first":"foo","label.name.second":"bar"};

这里 json.label.name.first 不会给我“foo”。

有人可以帮我这个吗?

4 个答案:

答案 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字符串