In this quick tutorial, you'll learn how to use the Gson library to convert a JSON array string into a list of Java Objects and vice versa.

Dependencies

To add Gson to your Gradle project, add the following dependency to build.gradle file:

implementation 'com.google.code.gson:gson:2.8.6'

For Maven, include the below dependency to your pom.xml file:

<dependency>
  <groupId>com.google.code.gson</groupId>
  <artifactId>gson</artifactId>
  <version>2.8.6</version>
</dependency>

Example JSON Array

Let us say we have the following JSON array that we want to convert into a list of Java Objects:

[
  {
    "name": "John Doe",
    "email": "john.doe@example.com",
    "roles": [
      "Member",
      "Admin"
    ],
    "admin": true
  },
  {
    "name": "Tom Lee",
    "email": "tom.lee@example.com",
    "roles": [
      "Member"
    ],
    "admin": false
  }
]

Convert JSON Array to Java List

To convert the above JSON array to list of Java Objects, let us first create a simple User class to map JSON fields:

public class User {

    public String name;
    public String email;
    private String[] roles;
    private boolean admin;

    public User() {
    }

    public User(String name, String email, String[] roles, boolean admin) {
        this.name = name;
        this.email = email;
        this.roles = roles;
        this.admin = admin;
    }

    // getters and setters, toString() .... (omitted for brevity)
}

Now we can use the fromJson() method from the Gson class to convert the above JSON array to a list of User object, as follows:

try {
    // JSON array
    String json = "[{\"name\":\"John Doe\",\"email\":\"john.doe@example.com\"," +
            "\"roles\":[\"Member\",\"Admin\"],\"admin\":true},{\"name\":\"Tom Lee\"," +
            "\"email\":\"tom.lee@example.com\",\"roles\":[\"Member\"],\"admin\":false}]";

    // convert JSON array to Java List
    List<User> users = new Gson().fromJson(json, new TypeToken<List<User>>() {}.getType());

    // print list of users
    users.forEach(System.out::println);

} catch (Exception ex) {
    ex.printStackTrace();
}

You should see the following output printed on the console:

User{name='John Doe', email='john.doe@example.com', roles=[Member, Admin], admin=true}
User{name='Tom Lee', email='tom.lee@example.com', roles=[Member], admin=false}

To convert the JSON array into an equivalent Java array, you should do the following:

User[] users = new Gson().fromJson(json, User[].class);

If your JSON array is stored in a JSON file, you can still read and parse its content to a list of Java Objects using Gson, as shown below:

List<User> users = new Gson().fromJson(new FileReader("users.json"),
        new TypeToken<List<User>>() {}.getType());

Convert List of Java Objects to JSON Array

The following example demonstrates how to use the toJson() method from Gson class to convert a list of Java Objects to their JSON representation:

try {
    // create a list of users
    List<User> users = Arrays.asList(
            new User("John Doe", "john.doe@example.com",
                    new String[]{"Member", "Admin"}, true),
            new User("Tom Lee", "tom.lee@example.com",
                    new String[]{"Member"}, false)
    );

    // convert users list to JSON array
    String json = new Gson().toJson(users);

    // print JSON string
    System.out.println(json);

} catch (Exception ex) {
    ex.printStackTrace();
}

You should see the following output:

[{"name":"John Doe","email":"john.doe@example.com","roles":["Member","Admin"],"admin":true},
{"name":"Tom Lee","email":"tom.lee@example.com","roles":["Member"],"admin":false}]

To write a list of Java Objects directly to a JSON file, you can pass an instance of Writer to the toJson() method:

try {
    // create a list of users
    List<User> users = Arrays.asList(
            new User("John Doe", "john.doe@example.com",
                    new String[]{"Member", "Admin"}, true),
            new User("Tom Lee", "tom.lee@example.com",
                    new String[]{"Member"}, false)
    );

    // create writer
    Writer writer = new FileWriter("users.json");

    // convert users list to JSON file
    new Gson().toJson(users, writer);

    // close writer
    writer.close();

} catch (Exception ex) {
    ex.printStackTrace();
}

For more Gson examples, check out the How to read and write JSON using Gson in Java tutorial.

✌️ Like this article? Follow @attacomsian on Twitter. You can also follow me on LinkedIn and DEV. Buy me a coffee (cost $3)

Need help to start a new Spring Boot or MEAN stack project? I am available for contract work. Hire me to accomplish your business goals with engineering and design. Let’s talk about your project: hi@attacomsian.com.