首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JSON中使用For循环

在JSON中使用For循环
EN

Stack Overflow用户
提问于 2013-04-25 09:02:33
回答 2查看 13.7K关注 0票数 2

我在下面有一个JSON对象,并且有多个嵌套的分区,第一个没有任何标识符。我正在尝试使用for循环访问上一个部门中的团队,但我无法访问它们。需要一些指导。

代码语言:javascript
复制
{
    "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"
                        ]
                    },
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-25 09:39:20

更新:嗯,在仔细阅读了你的JSON之后,我注意到第一部门只有一个团队,因为这个团队只有一个对象。但看起来第二师有不止一支队伍,因为队伍中有一组物体。我想你必须处理一个分区中只有一个团队的情况。

您的for循环几乎是正确的。试试这个:

代码语言:javascript
复制
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);
    }
}

你的循环是

代码语言:javascript
复制
for (i=0; i <= JSONObject.division.division.teams[i].length; i++) { }

它有两个问题,第一,你跳过了最后一个元素,第二,JSONObject.division.division.teams[i]不是一个数组,但是这个JSONObject.division.division[i].team会给你一个组织中所有团队的数组。然后,您可以通过数组中的索引来获取所需的团队:)

票数 2
EN

Stack Overflow用户

发布于 2013-04-25 09:24:44

首先,你应该在json中修正你的括号。

代码语言:javascript
复制
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"
                        ]
                    }
                   ]
           }
        ]
    }
}

然后,您可以使用以下命令访问第二个'team‘对象:

代码语言:javascript
复制
a['division']['division'][1]['team'][0]['id'];

这将为您提供id。你可以选择任何你想要的东西。这并不是那么复杂。像拼图一样读就行了。

这是一个真实的例子:JSFiddle

下面是一些循环:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16204753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档