我下面有一个JSON对象,并且有多个嵌套分区,第一个没有任何标识符。我试图使用for循环访问最后一个分区内的团队,但我无法访问它们。需要一些指导。
{
"division": {
"division": [
{
"team": {
"id": "229525",
"name": "MyTeam",
"photo": "",
"visible": "True",
"RosterView": "True",
"PublicResults": "True",
"Statistics": "False",
"privilege": [
"False",
"True",
"True",
"True",
"True",
"True",
"True"
]
},
"name": "Boys 9-10",
"id": "12897",
"sort": "0",
"open": "0"
},
{
"team": [
{
"id": "229523",
"name": "Cougars",
"photo": "",
"visible": "True",
"RosterView": "True",
"PublicResults": "True",
"Statistics": "False",
"privilege": [
"False",
"True",
"True",
"True",
"True",
"True",
"True"
]
},
答案 0 :(得分:1)
首先,您应该在json中修改括号。
var a = {
"division": {
"division": [
{
"team": {
"id": "229525",
"name": "MyTeam",
"photo": "",
"visible": "True",
"RosterView": "True",
"PublicResults": "True",
"Statistics": "False",
"privilege": [
"False",
"True",
"True",
"True",
"True",
"True",
"True"
]
},
"name": "Boys 9-10",
"id": "12897",
"sort": "0",
"open": "0"
},
{
"team": [
{
"id": "229523",
"name": "Cougars",
"photo": "",
"visible": "True",
"RosterView": "True",
"PublicResults": "True",
"Statistics": "False",
"privilege": [
"False",
"True",
"True",
"True",
"True",
"True",
"True"
]
}
]
}
]
}
}
然后你可以通过以下方式获得第二个“团队”对象:
a['division']['division'][1]['team'][0]['id'];
这会给你id
。您可以选择任何您想要的东西。它并不复杂。只是把它读成一个谜题。
以下是实例: JSFiddle
这里有一些for循环:
var json1 = a['division']['division'][1]['team'][0]; // this is for second team array,
json2 = a['division']['division'][0]['team']; // this is for first team object,
for (obj in json1){
return json[obj];
};
根据您的json,第一个和第二个teams
不在同一数据类型中。第一个团队是阵列,但第二个团队是对象。这就是为什么有两个不同的变量。
答案 1 :(得分:1)
更新:嗯,在仔细阅读了你的JSON之后,我注意到第一师只有一个团队,因为团队只有一个对象。但是,由于团队中有一系列对象,因此第二师似乎拥有超过一个团队。我想你必须处理一个师只有一个团队的情况。
你的for循环几乎是正确的。试试这个:
var divisions = JSONObject.division.division;
for (var i=0; i < divisions.length; i++) {
// handle division of one team here,
// don't need for loop if there only one team
// just do division[i].team.id
for (var j=0; j < divisions[i].length; j++) {
var teamId = divisions[i].team[j].id;
alert(teamId);
}
}
你的循环是
for (i=0; i <= JSONObject.division.division.teams[i].length; i++) { }
它有两个问题,首先你是通过i <= ...length; i++
跳过最后一个元素
第二,JSONObject.division.division.teams[i]
不是一个数组,但是这个JSONObject.division.division[i].team
会给你一个分区中所有团队的数组。然后你可以通过数组中的索引获得你想要的团队:)