2

我在下面有一个 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"
                        ]
                    },
4

2 回答 2

2

更新:嗯,仔细阅读您的 JSON 后,我注意到第一师只有 1 个团队,因为团队只有一个对象。但似乎第 2 师有不止 1 个团队,因为团队中有一系列对象。我想你必须处理一个部门只有一个团队的情况。

您的 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会给你一个分区中所有团队的数组。然后你可以通过它在数组中的索引来获得你想要的团队:)

于 2013-04-25T01:39:19.597 回答
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数据类型不同。第一队是数组,但第二队是对象。这就是为什么有两个不同的变量。

于 2013-04-25T01:24:44.443 回答