This post explains converting Java object to/from JSON using Google GSON library. To get hold of JSON Basics concepts, please refer to JSON basics. Let’s get going.
com.google.gson.Gson is the main class used for converting JSON to/from java objects. This class provides toJson & fromJson methods to convert Java object to/from JSON. Gson library also provides com.google.gson.GsonBuilder which is essentially a builder to create instances of Gson with additional configuration options.
Typical usages are as follows:
//Create gson instance Gson gson = new Gson(); //or use GsonBuilder to create a Gson instance with some additional configuration Gson gson = new GsonBuilder().setPrettyPrinting().create();
//Convert Java object to JSON String jsonString = gson.toJson(java_object);
//Read JSON and populate java objects //convert JSON to Java object Car car = gson.fromJson(jsonString, Car.class);
Complete Example
Step 1: Include Google GSON dependency in pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.websystique.json</groupId> <artifactId>GsonObjectToJsonExample</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>GsonObjectToJsonExample</name> <dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.3.1</version> </dependency> </dependencies> </project>
Step 2: Create POJO
This object will be converted to and from JSON.
package com.websystique.json.gson.model;
import java.util.ArrayList;
import java.util.List;
public class Car {
	private String name;
	
	private int model;
	
	private double price;
	
	private List<String> colors = new ArrayList<String>();
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getModel() {
		return model;
	}
	public void setModel(int model) {
		this.model = model;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public List<String> getColors() {
		return colors;
	}
	public void setColors(List<String> colors) {
		this.colors = colors;
	}
	@Override
	public String toString() {
		return "Car [name=" + name + ", model=" + model + ", price=" + price
				+ ", colors=" + colors + "]";
	}
	
	
}
Step 3: Convert Java Object to JSON string
Convert Car object into JSON using toJson method
package com.websystique.json.gson;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.websystique.json.gson.model.Car;
public class GsonObjectToJsonDemo {
	public static void main(String args[]){
		Gson gson = new Gson();
		//Gson gson = new GsonBuilder().setPrettyPrinting().create();  //Toggle comment for Pretty print JSON
		
		Car car = new Car();
		car.setName("AUDI");
		car.setModel(2014);
		car.setPrice(30000);
		
		car.getColors().add("GRAY");
		car.getColors().add("BLACK");
		car.getColors().add("WHITE");
	 
		String jsonString = gson.toJson(car); // Convert car object to JSON string
		System.out.println(jsonString);
	}
}
Run above program. Following is the output
{"name":"AUDI","model":2014,"price":30000.0,"colors":["GRAY","BLACK","WHITE"]}
Pretty print JSON
You can pretty print JSON using GsonBuilder setPrettyPrinting. Just toggle the comment above, following is the output.
{
  "name": "AUDI",
  "model": 2014,
  "price": 30000.0,
  "colors": [
    "GRAY",
    "BLACK",
    "WHITE"
  ]
}
Step 4: Convert JSON string to Java Object
Convert JSON string to Car object using fromJson method
package com.websystique.json.gson;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.websystique.json.gson.model.Car;
public class GsonObjectToJsonDemo {
	public static void main(String args[]){
		Gson gson = new Gson();
		//Gson gson = new GsonBuilder().setPrettyPrinting().create();  //Toggle comment for Pretty print JSON
		
		String jsonString  = "{\"name\":\"AUDI\",\"model\":2014, \"price\":30000,\"colors\":[\"GRAY\",\"BLACK\",\"WHITE\"]}";
	
		Car car = gson.fromJson(jsonString, Car.class);// Convert JSON String to car object
		System.out.println(car);
	}
}
Run above program. Following is the output
Car [name=AUDI, model=2014, price=30000.0, colors=[GRAY, BLACK, WHITE]]
That’s it. In the next post we will learn how Json can be represented as a conceptual Tree.
References
If you like tutorials on this site, why not take a step further and connect me on Facebook , Google Plus & Twitter as well? I would love to hear your thoughts on these articles, it will help improve further our learning process.