Gson – How to convert Java object to / from JSON

author image

In this tutorial, we will show you how to use Gson to convert Java object to / from JSON.

P.S All examples are tested by Gson 2.8.5

Note
JSON stands for JavaScript Object Notation, it is a lightweight data-interchange format. You can see many Java applications started to throw away XML format and start using JSON as a new data-interchange format. Java is all about object, often times, you need to convert an object into JSON format for data-interchange or vice verse.

1. Download Gson

pom.xml

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

2. Gson Basic

toJson() – Convert Java objects to JSON

                              Gson gson = new Gson(); 	 	Staff obj = new Staff();  	// 1. Java object to JSON file 	gson.toJson(obj, new FileWriter("C:\\projects\\staff.json")); 	 	// 2. Java object to JSON string 	String jsonInString = gson.toJson(obj);                          

fromJson() – Convert JSON to Java objects

                              Gson gson = new Gson();  	// 1. JSON file to Java object 	Staff staff = gson.fromJson(new FileReader("C:\\projects\\staff.json"), Staff.class);  	// 2. JSON string to Java object 	String json = "{'name' : 'mkyong'}"; 	Staff staff = gson.fromJson(json, Staff.class); 		 	// 3. JSON file to JsonElement, later String 	JsonElement json = gson.fromJson(new FileReader("C:\\projects\\staff.json"), JsonElement.class);     String result = gson.toJson(json);                          

3. Java Objects to JSON

3.1 A Java POJO, later uses this for conversion.

Staff.java

                              package com.mkyong;  import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import java.util.Map;  public class Staff {      private String name;     private int age;     private String[] position;              // array     private List<String> skills;            // list     private Map<String, BigDecimal> salary; // map      //getters and setters }                          

3.2 In Gson, we can use gson.toJson() to convert Java objects to JSON.

GsonExample1.java

                              package com.mkyong;  import com.google.gson.Gson;  import java.io.FileWriter; import java.io.IOException; import java.math.BigDecimal; import java.util.Arrays; import java.util.HashMap; import java.util.Map;  public class GsonExample1 {      public static void main(String[] args) {          Gson gson = new Gson();          Staff staff = createStaffObject();          // Java objects to String         // String json = gson.toJson(staff);          // Java objects to File         try (FileWriter writer = new FileWriter("C:\\projects\\staff.json")) {             gson.toJson(staff, writer);         } catch (IOException e) {             e.printStackTrace();         }      }      private static Staff createStaffObject() {          Staff staff = new Staff();          staff.setName("mkyong");         staff.setAge(35);         staff.setPosition(new String[]{"Founder", "CTO", "Writer"});         Map<String, BigDecimal> salary = new HashMap() {{             put("2010", new BigDecimal(10000));             put("2012", new BigDecimal(12000));             put("2018", new BigDecimal(14000));         }};         staff.setSalary(salary);         staff.setSkills(Arrays.asList("java", "python", "node", "kotlin"));          return staff;      }  }                          

By default, Gson write JSON in compact mode.

C:\\projects\\staff.json

                              {"name":"mkyong","age":35,"position":["Founder","CTO","Writer"],"skills":["java","python","node","kotlin"],"salary":{"2018":14000,"2012":12000,"2010":10000}}                          

To enable the pretty print mode :

                              import com.google.gson.Gson; import com.google.gson.GsonBuilder;  	Gson gson = new GsonBuilder().setPrettyPrinting().create();                          

Output

C:\\projects\\staff.json

                              {   "name": "mkyong",   "age": 35,   "position": [     "Founder",     "CTO",     "Writer"   ],   "skills": [     "java",     "python",     "node",     "kotlin"   ],   "salary": {     "2018": 14000,     "2012": 12000,     "2010": 10000   } }                          

4. JSON to Java Objects

4.1 In Gson, we can use gson.fromJson to convert JSON back to Java objects.

GsonExample2.java

                                  package com.mkyong;  import com.google.gson.Gson;  import java.io.FileReader; import java.io.IOException; import java.io.Reader;  public class GsonExample2 {      public static void main(String[] args) {          Gson gson = new Gson();          try (Reader reader = new FileReader("c:\\projects\\staff.json")) {              // Convert JSON File to Java Object             Staff staff = gson.fromJson(reader, Staff.class); 			 			// print staff object             System.out.println(staff);          } catch (IOException e) {             e.printStackTrace();         }      }  }                              

Output

                                  Staff{name='mkyong', age=35, position=[Founder, CTO, Writer], skills=[java, python, node, kotlin], salary={2018=14000, 2012=12000, 2010=10000}}                              

4.2 Convert to JsonElement

GsonExample3.java

                                  package com.mkyong;  import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement;  import java.io.FileReader; import java.io.IOException; import java.io.Reader;  public class GsonExample3 {      public static void main(String[] args) {  		// pretty print          Gson gson = new GsonBuilder().setPrettyPrinting().create();          try (Reader reader = new FileReader("c:\\projects\\staff.json")) { 		             // Convert JSON to JsonElement, and later to String             JsonElement json = gson.fromJson(reader, JsonElement.class);              String jsonInString = gson.toJson(json); 			             System.out.println(jsonInString);          } catch (IOException e) {             e.printStackTrace();         }       }      }                              

Output

                                  {   "name": "mkyong",   "age": 35,   "position": [     "Founder",     "CTO",     "Writer"   ],   "skills": [     "java",     "python",     "node",     "kotlin"   ],   "salary": {     "2018": 14000,     "2012": 12000,     "2010": 10000   } }                              

References

  • Gson github link
  • Gson – How to parse JSON
  • JSON Official site
  • Wikipedia – JSON
  • Gson – How to enable pretty print JSON output

author image

Comments