繁体   English   中英

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

[英]Access JSON object to get Resource Bundle key/value pair

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

例如

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

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

有人可以帮我弄这个吗?

由于键名中使用句点字符( . ),因此需要使用[]表示法来访问其值。

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对象和数组文字的格式非常相似。

做这个:

json["label.name.first"]

但是,我认为您误会了. 符号。

顺便说一句,您的json不是JSON,它是一个javascript对象,而不是其符号。

json["label.name.first"]会让您"foo" 由于您的媒体资源名称包含不能在变量名称中使用的字符。

如果希望使用语法json.label.name.first访问这些属性,那么您的JSON必须为:

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

这不是创建对象的正确方法,您应该创建一个这样的对象。

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

它也可以作为json字符串

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM