Convert JSON Array to List using Gson in Java

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 the build.gradle:

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 a 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 objects:

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 the 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 me on Twitter and LinkedIn. You can also subscribe to RSS Feed.

You might also like...

Digital Ocean

The simplest cloud platform for developers & teams. Start with a $200 free credit.

Buy me a coffee ☕

If you enjoy reading my articles and want to help me out paying bills, please consider buying me a coffee ($5) or two ($10). I will be highly grateful to you ✌️

Enter the number of coffees below:

✨ Learn to build modern web applications using JavaScript and Spring Boot

I started this blog as a place to share everything I have learned in the last decade. I write about modern JavaScript, Node.js, Spring Boot, core Java, RESTful APIs, and all things web development.

The newsletter is sent every week and includes early access to clear, concise, and easy-to-follow tutorials, and other stuff I think you'd enjoy! No spam ever, unsubscribe at any time.