How to Setup GSON For Java Application?

30 Aug, 2021
GSON is Google’s JSON parser. It is used to parse JSON files and generate JSON files. It has multiple APIs which serialize Java objects to JSON and deserializes JSON files to Java objects. To use GSON in your java application, we first need to install it. To do this, we can either add GSON jar dependency in Maven pom.xml file or we can download the jar and add it to our project as shown below:
pom.xml file is as follows:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.3.1</version>
</dependency>
Let’s understand how Gson serializes and deserializes using various APIs.
Consider XYZ company which maintains Employee information. So we have Employee class with attributes like id, name, department, salary and rating. We create  a Gson instance as follows:
Gson gson = new Gson();
Methods:
Creating an object with all attributes and generate a GSON out of itCreating a new instance of gson using GsonBuilder
Creating an object with all attributes and generate a GSON out of it
Creating a new instance of gson using GsonBuilder
Implementation: 
Method 1: We create an object with all attributes and generate a GSON out of it.
Example
Java
// Java Program to Create an Employee object with all// Attributes and generate a GSON out of it // Importing input output classesimport com.google.gson.Gson;import java.io.*; // Main classclass GFG {     // Main driver method    public static void main(String[] args)    {         // Creating an object of Gson class        Gson gson = new Gson();        // Creating an object of Employee class        Employee emp = new Employee();         // Attributes        emp.setName("John");        emp.setId("E00101");        emp.setDepartment("IT");        emp.setSalary(250000.00);        emp.setRating(7);         // Generating json from emp object        String empJson = gson.toJson(emp);        System.out.println("Emp json is " + empJson);         // Changing one of the attributes of emp object        emp.setDepartment("Java");         // Generating emp object from emp json        Employee empGenerated = gson.fromJson(            gson.toJson(emp), Employee.class);         // Print and display the employee been generated        System.out.println(            "Generated employee from json is "            + empGenerated);    }} // Class 2// Helper classclass Employee {     // Member variables of this class    private String id;    private String name;    private String department;    private int rating;    private double salary;     // Member functions of this class     // Method 1    public String getId() { return id; }     // Method 2    public void setId(String id) { this.id = id; }     // Method 3    public String getName() { return name; }     // Method 4    public void setName(String name) { this.name = name; }     // Method 5    public String getDepartment() { return department; }     // Method 6    public void setDepartment(String department)    {        this.department = department;    }     // Method 7    public int getRating() { return rating; }     // Method 8    public void setRating(int rating)    {        this.rating = rating;    }     // Method 9    public double getSalary() { return salary; }     // Method 10    public void setSalary(double salary)    {        this.salary = salary;    }     // Method  11    @Override public String toString()    {        return "Employee [id=" + id + ", name=" + name            + ", department=" + department + ", rating="            + rating + ", salary=" + salary + "]";    }}
  
Output:
 
Emp json is {"id":"E00101","name":"John","department":"IT","rating":7,"salary":250000.0}
Generated employee from json is Employee [id=E00101, name=John, department=Java, rating=7, salary=250000.0]
Method 2: We can also create a new instance of gson using GsonBuilder.
Syntax:
GsonBuilder gsonBuilder = new GsonBuilder();
Gson gson = gsonBuilder.create();
Implementation:
Example 1
Java
// Java Program where we will be using GsonBuilder object to// Pretty Print the gson Contents // Importing I/O classesimport java.io.*; // Class 1// Main classclass GFG {     // Main driver method    public static void main(String[] args)    {        // Creating an object of Employee class        Employee emp = new Employee();         // Attributes        emp.setId("F000101");        emp.setName("Dave");        emp.setRating(9);        emp.setDepartment("DB");        emp.setSalary(150000.00);         // Creating a GSON builder        GsonBuilder gsonBuilder = new GsonBuilder();         // Creating a GSON from GSON builder        Gson gson = gsonBuilder.create();         // Creating an employee gson using pretty printing        String empJson = gsonBuilder.setPrettyPrinting()                             .create()                             .toJson(emp);         // Print and display        System.out.println(            "Emp json in pretty print format:" + empJson);         // Update rating of emp object        emp.setRating(8);         Employee updatedEmp = gson.fromJson(            gson.toJson(emp), Employee.class);         // Print and displaying the updated employee        System.out.println("Updated employee is : "                           + updatedEmp);    }} // Class 2// Helper classclass Employee {     // Attributes    private String id;    private String name;    private String department;    private int rating;    private double salary;     // Member methods of this class    public String getId() { return id; }     public void setId(String id) { this.id = id; }     public String getName() { return name; }     public void setName(String name) { this.name = name; }     public String getDepartment() { return department; }     public void setDepartment(String department)    {        this.department = department;    }     public int getRating() { return rating; }     public void setRating(int rating)    {        this.rating = rating;    }     public double getSalary() { return salary; }     public void setSalary(double salary)    {        this.salary = salary;    }     @Override public String toString()    {        return "Employee [id=" + id + ", name=" + name            + ", department=" + department + ", rating="            + rating + ", salary=" + salary + "]";    }}
  
Output:-
Emp json in pretty print format:{
  "id": "F000101",
  "name": "Dave",
  "department": "DB",
  "rating": 9,
  "salary": 150000.0
}
Updated employee is : Employee [id=F000101, name=Dave, department=DB, rating=8, salary=150000.0]
If we make any field in Employee class as transient, then Gson library will ignore it during serialization and deserialization and set it to its default value. Let’s understand this with an example. 
Example 2
Java
// Java Program to Make Rating Attribute of Employee class// as Transient // Importing required classesimport java.io.*; // Class 1// Main classclass GFG {     // Main driver method    public static void main(String[] args)    {         // Creating an object of Gson and user-defined        // Employee class        Gson gson = new Gson();        Employee emp = new Employee();         emp.setName("Jane");        emp.setId("J01012");        emp.setDepartment("Devops");        emp.setSalary(200000.00);        emp.setRating(7);         // Generating json from emp object        String empJson = gson.toJson(emp);        System.out.println("Emp json is " + empJson);         // Changing one of the attributes of emp object        emp.setDepartment("Java");         // Generate emp object from emp json        Employee empGenerated = gson.fromJson(            gson.toJson(emp), Employee.class);         // Print and display the employee generated from        // json        System.out.println(            "Generated employee from json is "            + empGenerated);    }} // Class 2// Helper classclass Employee {     // Attributes    private String id;    private String name;    private String department;    private transient int rating;    private double salary;     // Member methods of this class     public String getId() { return id; }     public void setId(String id) { this.id = id; }     public String getName() { return name; }     public void setName(String name) { this.name = name; }     public String getDepartment() { return department; }     public void setDepartment(String department)    {        this.department = department;    }     public int getRating() { return rating; }     public void setRating(int rating)    {        this.rating = rating;    }     public double getSalary() { return salary; }     public void setSalary(double salary)    {        this.salary = salary;    }     @Override public String toString()    {        return "Employee [id=" + id + ", name=" + name            + ", department=" + department + ", rating="            + rating + ", salary=" + salary + "]";    }}
Output:
Emp json is {"id":"J01012","name":"Jane","department":"Devops","salary":200000.0}
Generated employee from json is Employee [id=J01012, name=Jane, department=Java, rating=0, salary=200000.0]
Output explanation:
When the employee object is serialized to json, the rating attribute is not present in the json string as it is marked as transient.  When the json string is deserialized to an employee object, the rating being an int field is set to its default value which is 0. Thus, Gson library ignores transient fields and sets them to their default value based on the data type of the field.
 
gabaa406
singghakshay
surindertarika1234
simmytarika5
Picked
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Introduction to Java
Constructors in Java
Exceptions in Java
Generics in Java
Functional Interfaces in Java
Strings in Java
Java Programming Examples
Abstraction in Java
HashSet in Java