Gson – Read and Write JSON

Learn to use Google GSON library to serialize Java Objects into their JSON string and to deserialize a JSON string to an equivalent Java object. GSON provides simple toJson() and fromJson() methods to convert Java objects to JSON and vice-versa.

1. Dependency

Maven dependency. Visit the maven repository for the latest version.

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

Gradle dependency.

dependencies {
  implementation 'com.google.code.gson:gson:2.8.9'
}

2. Serialization – Write JSON using Gson

Serialization in the context of Gson means converting a Java object to its JSON representation.

In order to do the serialization, we need to create the Gson object, which handles the conversion. Next, we need to call the function toJson() and pass the User object.

import java.time.LocalDate;
import java.time.Month;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.howtodoinjava.demo.model.Department;
import com.howtodoinjava.demo.model.User;

public class SerializationExample {
  public static void main(final String[] args) {

    User user = new User(1L, "lokesh", "gupta",
      LocalDate.of(1999, Month.JANUARY, 1), new Department(2, "IT", true));

    Gson gson = new GsonBuilder()
      .setPrettyPrinting()
      .registerTypeAdapter(LocalDate.class, new LocalDateAdapter())
      .create();

    String jsonString = gson.toJson(user);

    System.out.println(jsonString);
  }
}

Program output.

{
  "id": 1,
  "firstName": "lokesh",
  "lastName": "gupta",
  "dateOfbirth": "1999-01-01",
  "department": {
    "id": 2,
    "name": "IT",
    "active": true
  }
}

3. Deserialization – Read JSON using Gson

Deserialization in the context of Gson means converting a JSON string to an equivalent Java object.

In order to do the deserialization, we need a Gson object and call the function fromJson() and pass two parameters i.e. JSON string and expected java type after parsing is finished.

import java.time.LocalDate;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.howtodoinjava.demo.model.User;

public class DeserializationExample {
  public static void main(final String[] args) {
    
    String jsonString = """
      {  
        "id": 1,
        "firstName": "lokesh",
        "lastName": "gupta",
        "dateOfbirth": "1999-01-01",
        "department": {
          "id": 2,
          "name": "IT",
          "active": true
        }
      }""";
    
    Gson gson = new GsonBuilder()
      .registerTypeAdapter(LocalDate.class, new LocalDateAdapter())
      .create();

    User user = gson.fromJson(jsonString, User.class);

    System.out.println(user);
  }
}

Program output.

User(id=1, firstName=lokesh, lastName=gupta, dateOfbirth=1999-01-01, 
department=Department(id=2, name=IT, active=true))

Happy Learning !!

Download Sourcecode

Was this post helpful?

Join 7000+ Awesome Developers

Get the latest updates from industry, awesome resources, blog updates and much more.

* We do not spam !!

2 thoughts on “Gson – Read and Write JSON”

  1. In your example above, it seems @ sign in email address is not issue. But the problem I am trying to identify in deserializing Email address field, the ‘@‘ sign is dropped with the rest of the value intact. From the field annotation, it has ‘TEXT’ encoding and field type is alphanumeric / special characters.
    I googled several topics about json and gson but did not find anything close that would point me to the issue.
    Hope I explained my issue well.

    Thank you.
    Edgardo

    Reply
    • Please ignore this. I have found the issue. I am new to Gson/Java so took time for me to understand the process. There is a replaceAll() command applied to all field types. Not the best logic obviously.
      Thank you.
      Sorry too—can not figure out how to edit the message.

      Reply

Leave a Comment

HowToDoInJava

A blog about Java and related technologies, the best practices, algorithms, and interview questions.