1

I need an output JSON like this:

{
    "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
          }
        }
    ]
}

The values in each "avatar": part will be gotten through a loop. How would I go about forming this sort of JSON?

I have the first bit:

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

But I am not sure what I need to do to get the list of players.

I am using the Java-JSON library.

1 Answers1

1

You should create a Game, a Player and an Avatar objects. Game must have a Player list and Player has an Avatar object.

Fill your game objects and convert it to Json via new Gson().toJson(game) as at the below.

Gson is a Json library(Google's Project) that makes developers life easier while working with 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));
}

It prints:

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

Game object,

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;
    }
}

Player object,

public class Player {
    private Avatar avatar;

    public Avatar getAvatar() {
        return avatar;
    }

    public void setAvatar(Avatar avatar) {
        this.avatar = avatar;
    }
}

Avatar object

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;
    }
}
Sedat Polat
  • 1,631
  • 2
  • 18
  • 28
  • Hey, I added more fields and stuff and now it is showing it all and it works but the array list of players comes straight after the "name" but when after the name but there sud b some more fields which are now showing after the player list. –  Oct 10 '15 at 08:49
  • It should not matter for you. You can convert this string to your game object whenever you want. Ordering is not important. – Sedat Polat Oct 10 '15 at 08:54
  • See this: http://stackoverflow.com/questions/33051729/gson-tojson-misordering-items –  Oct 10 '15 at 08:59