In this quick guide, you'll learn how to use Gson to convert a Java Object to its JSON representation and vice versa. Gson provides toJson() and fromJson() methods to convert Java Objects to and from JSON string.

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>

Create Java Class

Let us first create a simple Java class for holding the User information:

User.java

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

Java Object to JSON

Convert Java Object to JSON String

To convert a Java Object into a JSON string, you can use the toJson() method from the Gson class, as shown below:

try {
    // create user object
    User user = new User("John Doe", "john.doe@example.com",
            new String[]{"Member", "Admin"}, true);

    // convert user object to JSON
    String json = new Gson().toJson(user);

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

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

The above code will generate the following JSON string:

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

Convert Java Object to JSON File

The toJson() method also accepts an instance of Writer as a second parameter. You can use this parameter to output the JSON directly to a file:

try {
    // create user object
    User user = new User("John Doe", "john.doe@example.com",
            new String[]{"Member", "Admin"}, true);

    // create Gson instance
    Gson gson = new Gson();

    // create a writer
    Writer writer = Files.newBufferedWriter(Paths.get("user.json"));

    // convert user object to JSON file
    gson.toJson(user, writer);

    // close writer
    writer.close();

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

The user.json file should contain the following JSON data:

{"roles":["Member","Admin"],"name":"John Deo","admin":true,"email":"john.doe@example.com"}

JSON to Java Object

Convert JSON String to Java Object

To convert a JSON string back to a Java Object, you can use the fromJson() method from Gson class, as shown below:

try {
    // user as JSON string
    String json = "{\"name\":\"John Doe\",\"email\":\"john.doe@example.com\"," +
            "\"roles\":[\"Member\",\"Admin\"],\"admin\":true}";

    // convert JSON string to Java Object
    User user = new Gson().fromJson(json, User.class);

    // print user
    System.out.println(user);

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

Here is the output of the above code:

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

Convert JSON File to Java Object

The fromJson() method also accepts an instance of Reader to parse the file content into a Java Object. Here is an example:

try {
    // create Gson instance
    Gson gson = new Gson();

    // create a reader
    Reader reader = Files.newBufferedReader(Paths.get("user.json"));

    // convert JSON string to User object
    User user = gson.fromJson(reader,User.class);

    // print user object
    System.out.println(user);

    // close reader
    reader.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.