我在用JSON和JS操作时有疑问,获取max_players。我有以下内容:
JSON
{
"football_team" : {
"real_madrid": {
"max_players" : 5
}
}
}
Javascript
var json = data.toJson();
console.log(json.football_team.real_madrid.max_players)
// return 5
我的疑问是,如果我有一个包含数据“real_madrid”的 var,我如何才能得到相同的结果,例如:
var json = data.toJson();
var name_team = "real_madrid";
var max_players = "json.football_team."+name_team+".max_players"
console.log(max_players)
// return json.football_team.real_madrid.max_players
有什么建议吗?
对于一个JSON对象,你不需要每次都做json.property.subproperty
。
属性可以作为 json["property"]["subproperty"]
访问
所以在您的情况下,您可以执行 json['football_team']['real_madrid']['max_players']
即
var json = data.toJson();
var name_team = "real_madrid";
var max_players = json['football_team'][name_team].max_players;
// or
// var max_players = json['football_team'][name_team]['max_players'];
// or
// var max_players = json.football_team[name_team].max_players;
// or
// var max_players = json.football_team[name_team]['max_players'];
console.log(max_players);
The notations json.property
and json['property']
are interchangeable.
有时您需要注意属性名称。
失败的例子
json = { "value:" : 4, 'help"': 2, "hello'" : 32, 'data+': 2, "😎" : '😴' };
// correct
console.log(json['value:']);
console.log(json['help"']);
console.log(json["help\""]);
console.log(json['hello\'']);
console.log(json["hello'"]);
console.log(json["data+"]);
console.log(json["😎"]);
// wrong
console.log(json.value:);
console.log(json.help");
console.log(json.hello');
console.log(json.data+);
console.log(json.😎);
属性名称不应干扰 javascript 的语法规则,以便您能够以 json.property_name
的形式访问它们
并且在 JSON 中访问属性时 json['property']
与 json["property"]
相同
当您有这样的疑问时,您可以打开浏览器的控制台并试验 JSON 对象。