Similar to Jackson API, Google GSON API
provides a conceptual tree notion for JSON
. Google Gson Tree model API provides com.google.gson.JsonParser
which can be used to parse the input JSON string into a tree of com.google.gson.JsonElement
. On reading side, JsonElement provides isJsonXXX
methods to check the type of Json element and getAsYYY()
methods to get the actual data on that tree node.
On the writing end, core com.google.gson.Gson
api provides toJsonTree
method which converts a java object into a conceptual tree node JsonElement
. JsonElement can then return JsonObject
which provides addProperty
methods to add individual fields/property on that JsonObject and create/construct the complete tree whose elements can be updated at run time.
- Spring MVC 4+Spring Security 4 + Hibernate Integration Example
- Spring MVC 4+AngularJS Routing with UI-Router Example
- Spring MVC 4+AngularJS Example
- Spring MVC 4 HelloWorld – Annotation/JavaConfig Example
- Spring MVC 4+Hibernate 4+MySQL+Maven integration example
- Spring 4 Hello World Example
- Spring Security 4 Hello World Annotation+XML Example
- Hibernate MySQL Maven Hello World Example (Annotation)
- TestNG Hello World Example
- JAXB2 Helloworld Example
- Spring Batch- Read a CSV file and write to an XML file
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>GsonTreeModelExample</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>GsonTreeModelExample</name> <dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.3.1</version> </dependency> </dependencies> </project>
Step 2: Read Input JSON string into Tree model
Sample input file input.json
used in below Main
{"name":"AUDI","model":2014,"price":30000,"colors":["GRAY","BLACK","WHITE"]}
package com.websystique.json.gson; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; public class JsonGsonTreeModelReadExample { public static void main(String[] args) throws FileNotFoundException { FileReader reader = new FileReader(new File("input.json")); JsonParser parser = new JsonParser(); JsonElement element = parser.parse(reader);// Returns Root element( // which is a JsonElement, // can be object,array, null // or primitive) if (element.isJsonObject()) { JsonObject car = element.getAsJsonObject(); System.out.println(car.get("name").getAsString());//read as string System.out.println(car.get("model").getAsInt()); //read as integer System.out.println(car.get("price").getAsDouble());//read as double JsonArray arr = car.getAsJsonArray("colors");//read as array for (int i = 0; i < arr.size(); i++) { System.out.println(arr.get(i).getAsString()); } } } }
Run it. Following output is generated:
AUDI 2014 30000.0 GRAY BLACK WHITE
Step 2: Write Tree model into Json String
package com.websystique.json.gson; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; public class JsonGsonTreeModelWriteExample { public static void main(String args[]) { JsonGsonTreeModelWriteExample ex = new JsonGsonTreeModelWriteExample(); Car car = ex.getCar(); Gson gson = new GsonBuilder().create(); JsonElement jsonElement = gson.toJsonTree(car); System.out.println("Original JSON : " + jsonElement); // Root element JsonObject jsonObject = jsonElement.getAsJsonObject(); jsonObject.addProperty("power", "300BHP"); // add a new property jsonObject.remove("cost"); // remove an existing property jsonObject.getAsJsonArray("colors").set(0, new JsonPrimitive("RED"));// update an existing property System.out.println("Updated JSON : " + jsonObject); } private Car getCar() { Car car = new Car(); car.setName("AUDI"); car.setModel(2014); car.setCost(45000); car.getColors().add("GREY"); car.getColors().add("BLACK"); car.getColors().add("WHITE"); return car; } }
package com.websystique.json.gson; import java.util.ArrayList; import java.util.List; public class Car { private String name; private int model; private double cost; 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 getCost() { return cost; } public void setCost(double cost) { this.cost = cost; } public List<String> getColors() { return colors; } public void setColors(List<String> colors) { this.colors = colors; } }
Run it. Following output is generated:
Original JSON : {"name":"AUDI","model":2014,"cost":45000.0,"colors":["GREY","BLACK","WHITE"]} Updated JSON : {"name":"AUDI","model":2014,"colors":["RED","BLACK","WHITE"],"power":"300BHP"}
That’s it. In the next post we will learn about Google Gson Streaming API.
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.