【问题标题】:Java JSONObjects Looping in JSONArrayJSONArray中的Java JSONObjects循环
【发布时间】:2015-10-09 23:18:57
【问题描述】:

我需要这样的输出 JSON:

{
    "id": 171799578198,
    "name": "Forum Striking",
    "players": [
        {
          "avatar": {
            "userId": 21393,
            "currentHomeId": 21393,
            "clanId": 171799578198
          }
        },
        {
          "avatar": {
            "userId": 64425223942,
            "currentHomeId": 64425223942,
            "clanId": 171799578198
          }
        },
        {
          "avatar": {
            "userId": 17180463537,
            "currentHomeId": 17180463537,
            "clanId": 171799578198
          }
        }
    ]
}

每个"avatar": 部分中的值将通过循环获取。我将如何形成这种 JSON?

我有第一个:

{
  "id": 171799578198,
  "name": "Forum Striking"
}

但我不确定我需要做什么才能获得玩家名单。

我正在使用 Java-JSON 库。

【问题讨论】:

    标签: java json


    【解决方案1】:

    您应该创建一个 Game、一个 Player 和一个 Avatar 对象。 Game 必须有一个 Player 列表,并且 Player 有一个 Avatar 对象。

    填写您的游戏对象并通过new Gson().toJson(game) 将其转换为Json,如下所示。

    Gson 是一个 Json 库(Google 的项目),它使开发人员在使用 Json 时更轻松;)

    public static void main(String[] args) throws IOException {
    
        Game game = new Game();
        game.setId(171799578198L);
        game.setName("Forum Striking");
    
        Avatar avatar = new Avatar();
        avatar.setUserId(21393L);
        avatar.setClanId(171799578198L);
        avatar.setCurrentHomeId(21393L);
    
        Player player = new Player();
        player.setAvatar(avatar);
        game.addPlayers(player);
    
        avatar = new Avatar();
        avatar.setUserId(64425223942L);
        avatar.setClanId(171799578198L);
        avatar.setCurrentHomeId(64425223942L);
    
        player = new Player();
        player.setAvatar(avatar);
        game.addPlayers(player);
    
        System.out.println(new Gson().toJson(game));
    }
    

    打印出来:

    {
      "id": 171799578198,
      "name": "Forum Striking",
      "players": [
        {
          "avatar": {
            "userId": 21393,
            "currentHomeId": 21393,
            "clanId": 171799578198
          }
        },
        {
          "avatar": {
            "userId": 64425223942,
            "currentHomeId": 64425223942,
            "clanId": 171799578198
          }
        }
      ]
    }
    

    游戏对象,

    public class Game {
    
        private Long id;
        private String name;
        private List<Player> players;
    
        public Long getId() {
            return id;
        }
    
        public void setId(Long id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<Player> getPlayers() {
            return players;
        }
    
        public List<Player> addPlayers(Player player) {
            if (getPlayers() == null)
                setPlayers(new ArrayList<Player>());
            players.add(player);
            return players;
        }
    
        public void setPlayers(List<Player> players) {
            this.players = players;
        }
    }
    

    播放器对象,

    public class Player {
        private Avatar avatar;
    
        public Avatar getAvatar() {
            return avatar;
        }
    
        public void setAvatar(Avatar avatar) {
            this.avatar = avatar;
        }
    }
    

    头像对象

    public class Avatar {
        private Long userId;
        private Long currentHomeId;
        private Long clanId;
    
        public Long getUserId() {
            return userId;
        }
        public void setUserId(Long userId) {
            this.userId = userId;
        }
        public Long getCurrentHomeId() {
            return currentHomeId;
        }
        public void setCurrentHomeId(Long currentHomeId) {
            this.currentHomeId = currentHomeId;
        }
        public Long getClanId() {
            return clanId;
        }
        public void setClanId(Long clanId) {
            this.clanId = clanId;
        }
    }
    

    【讨论】:

    • 嘿,我添加了更多的字段和内容,现在它显示了所有内容并且可以正常工作,但是玩家的数组列表直接在“名称”之后,但是在名称之后但还有更多现在显示在播放器列表之后的字段。
    • 对你来说应该没关系。您可以随时将此字符串转换为您的游戏对象。订购并不重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多