使用带有JSON的For循环

时间:2013-04-25 01:02:33

标签: json for-loop

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

2 个答案:

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