This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
Gson, or Google Gson, is an open-source Java library that serializes Java objects to JSON (and deserializes them back to Java).
Developer(s) | |
---|---|
Initial release | May 22, 2008 |
Stable release | 2.10.1
/ 6 January 2023 |
Repository |
|
Written in | Java |
Operating system | Cross-platform |
License | Apache License 2.0 |
Website | github |
The Gson library was originally developed for Google's internal purposes, with Version 1.0 being released on May 22, 2008 under the terms of Apache License 2.0. The latest version, 2.10.1, was released on January 6, 2023.
Gson uses reflection, which means that the classes don't have to be serialized or deserialized in order to be modified. By default, the class only needs to have a defined default (no-args) constructor; however, this can be worked around (see Features).
The following example demonstrates the most basic usage of Gson when serializing a sample object:
package example;
public class Car {
public String manufacturer;
public String model;
public double capacity;
public boolean accident;
public Car() {
}
public Car(String manufacturer, String model, double capacity, boolean accident) {
this.manufacturer = manufacturer;
this.model = model;
this.capacity = capacity;
this.accident = accident;
}
@Override
public String toString() {
return ("Manufacturer: " + manufacturer + ", " + "Model: " + model + ", " + "Capacity: " + capacity + ", " + "Accident: " + accident);
}
}
package example;
public class Person {
public String name;
public String surname;
public Car cars;
public int phone;
public transient int age;
public Person() {
}
public Person(String name, String surname, int phone, int age, Car cars) {
this.name = name;
this.surname = surname;
this.cars = cars;
this.phone = phone;
this.age = age;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Name: ").append(name).append(" ").append(surname).append("\n");
sb.append("Phone: ").append(phone).append("\n");
sb.append("Age: ").append(age).append("\n");
int i = 0;
for (Car car : cars) {
i++;
sb.append("Car ").append(i).append(": ").append(car).append("\n");
}
return sb.toString();
}
}
package main;
import example.Car;
import example.Person;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class Main {
public static void main(String args) {
// Enable pretty printing for demonstration purposes
// Can also directly create instance with `new Gson()`; this will produce compact JSON
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Car audi = new Car("Audi", "A4", 1.8, false);
Car skoda = new Car("Škoda", "Octavia", 2.0, true);
Car cars = {audi, skoda};
Person johnDoe = new Person("John", "Doe", 2025550191, 35, cars);
System.out.println(gson.toJson(johnDoe));
}
}
Calling the code of the above Main class will result in the following JSON output:
{
"name": "John",
"surname": "Doe",
"cars": [
{
"manufacturer": "Audi",
"model": "A4",
"capacity": 1.8,
"accident": false
},
{
"manufacturer": "Škoda",
"model": "Octavia",
"capacity": 2.0,
"accident": true
}
],
"phone": 2025550191
}
Since the Person's field age is marked as transient, it is not included in the output.
package main;
import example.Person;
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
Gson gson = new Gson();
String json = "{\"name\":\"John\",\"surname\":\"Doe\",\"cars\":[{\"manufacturer\":\"Audi\",\"model\":\"A4\"," +
"\"capacity\":1.8,\"accident\":false},{\"manufacturer\":\"Škoda\",\"model\":\"Octavia\",\"capacity\"" +
":2.0,\"accident\":true}],\"phone\":2025550191}";
Person johnDoe = gson.fromJson(json, Person.class);
System.out.println(johnDoe.toString());
}
}
To deserialize the output produced by the last example, you can execute the code above, which generates the following output:
Name: John Doe
Phone: 2025550191
Age: 0
Car 1: Manufacturer: Audi, Model: A4, Capacity: 1.8, Accident: false
Car 2: Manufacturer: Škoda, Model: Octavia, Capacity: 2.0, Accident: true
This shows how Gson can be used with the Java Platform Module System for the example above:
module GsonExample {
requires com.google.gson;
// Open package declared in the example above to allow Gson to use reflection on classes
// inside the package (and also access non-public fields)
opens example to com.google.gson;
}
For more extensive examples, see Gson's usage guide on their GitHub repository.
Latest online Gson Tutorials with example so this page for both freshers and experienced candidate who want to get job in Gson company