Tuesday, September 9, 2014

Json in Java - Convert Json object to Java and Java object to Json

JSON so called 'JavaScript Object Notation' is a lightweight data exchange format, it is a subset of 'JavaScript programming language standard ECMA-262 '. JSON is a language independent data interchange format that is fully supported by java language.

In java there are a number of standards and techniques to deal with JSON, GSON given by Google is the most commonly and easiest way of JSON implementation in java . In today's discussion we will come to know 'How to convert a JSON object to Java' and 'How to convert a Java object to JSON'.

To implement JSON in java using GSON we need to add an external JAR that can be downloaded from Here.

GSON provides two useful methods and everything moven around these two methods.
toJson() – Convert Java object to JSON format
fromJson() – Convert JSON into Java object

In this tutorial we will see step by step explanation and implementation of parse JSON in Java using Gson.


Project Structure

This is the overall project structure for today's discussion. We have added a 'gson' jar under lib folder to make our project to use gson capabilities. 'JavaToJson.java' file contains code for converting java object to json and 'JsonToJava.java' file contains code for convert json object to java. 'json' folder contains 'student.json' file that we will be using to read and convert json from. We have added a domain class 'Student.java' this will be used to carry an object to convert to json and from json. Please make sure you have added 'gson' jar to project's classpath.


Convert Java object to JSON using GSON

Convert java object to json is an easy task, all we need to do is having an java object and use a 'toJson' method from 'Gson' API.

src\com\beingjavaguys\domain\Student.java

This is a simple java domain class to obtain an object so that convert from java to json and json to java can be demonstrated.
  1. package com.beingjavaguys.domain;  
  2.   
  3. import java.util.List;  
  4.   
  5. public class Student {  
  6.    
  7.  private int id;  
  8.  private String firstName;  
  9.  private String lastName;  
  10.  private String gender;  
  11.  private String city;  
  12.  private List<string> interests;  
  13.   
  14. // getters and setters  
  15.  public int getId() {  
  16.   return id;  
  17.  }  
  18.  public void setId(int id) {  
  19.   this.id = id;  
  20.  }  
  21.  public String getFirstName() {  
  22.   return firstName;  
  23.  }  
  24.  public void setFirstName(String firstName) {  
  25.   this.firstName = firstName;  
  26.  }  
  27.  public String getLastName() {  
  28.   return lastName;  
  29.  }  
  30.  public void setLastName(String lastName) {  
  31.   this.lastName = lastName;  
  32.  }  
  33.  public String getGender() {  
  34.   return gender;  
  35.  }  
  36.  public void setGender(String gender) {  
  37.   this.gender = gender;  
  38.  }  
  39.  public String getCity() {  
  40.   return city;  
  41.  }  
  42.  public void setCity(String city) {  
  43.   this.city = city;  
  44.  }  
  45.  public List<string> getInterests() {  
  46.   return interests;  
  47.  }  
  48.  public void setInterests(List<string> interests) {  
  49.   this.interests = interests;  
  50.  }  
  51.    
  52. }  


src\com\beingjavaguys\core\JavaToJson.java

This is a simple java classes which contains actual code of convert java object to json, we have added some data to Student objcet here. All we did here is obtain an object from Gson and called toJson() method on our student object.
  1. package com.beingjavaguys.core;  
  2.   
  3. import java.util.ArrayList;  
  4. import com.beingjavaguys.domain.Student;  
  5. import com.google.gson.Gson;  
  6.   
  7. public class JavaToJson {  
  8.  public void convertJavaToJson(){  
  9.     
  10.   // simple object from student domain class  
  11.   Student student = new Student();  
  12.     
  13.   // added some data to student's object  
  14.   ArrayList<string> interests = new ArrayList<string>();  
  15.   interests.add("friends");  
  16.   interests.add("women");  
  17.   interests.add("chatting");  
  18.     
  19.   student.setId(1);  
  20.   student.setFirstName("ankush");  
  21.   student.setLastName("thakur");  
  22.   student.setGender("male");  
  23.   student.setInterests(interests);  
  24.     
  25.   // obtained Gson object   
  26.   Gson gson = new Gson();  
  27.     
  28.   // called toJson() method and passed student object as parameter  
  29.   // print generated json to console  
  30.   System.out.println(gson.toJson(student));  
  31.     
  32.   }  
  33. }  

Output

This is generated json from student java object.
  1. {"id":1,"firstName":"ankush","lastName":"thakur","gender":"male","city":"gurgaon","interests":["friends","women","chatting"]}  


Convert JSON object to Java using GSON

Convert json object to java is an easy task all we need to do is having an json file and reading json from there to convert to java.

Objective JSON file to convert in Java object

This is sample json string written under 'student.json' file, we will read this in our code to convert into a java object.
  1. {"id":1,"firstName":"ankush","lastName":"thakur","gender":"male","city":"gurgaon","interests":["friends","women","chatting"]}  

src\com\beingjavaguys\core\JsonToJava.java

We have read json from student.json file and passes the stream to 'fromJson()' method. Than we have iterated the object simply to see how to use data contained in json.
  1. package com.beingjavaguys.core;  
  2.   
  3. import java.io.BufferedReader;  
  4. import java.io.File;  
  5. import java.io.FileNotFoundException;  
  6. import java.io.FileReader;  
  7.   
  8. import com.beingjavaguys.domain.Student;  
  9. import com.google.gson.Gson;  
  10.   
  11. public class JsonToJava {  
  12.    
  13.  public void jsonToJava(){  
  14.     
  15.   try {   
  16.    // obtained a file object from json file  
  17.    File file = new File("json/student.json");  
  18.   
  19.    // get json as buffer  
  20.    BufferedReader br = new BufferedReader(new FileReader(file));  
  21.   
  22.    // obtained Gson object  
  23.    Gson gson = new Gson();  
  24.   
  25.    // called fromJson() method and passed incoming buffer from json file  
  26.    // passed student class reference to convert converted result as Student object  
  27.    Student student = gson.fromJson(br, Student.class);  
  28.      
  29.    // printed student data on console  
  30.    System.out.println("id: "+student.getId()+" First Name:"+student.getFirstName()  
  31.    +" Last Name: "+student.getLastName()+" Gender: "+student.getGender()+" City: "+student.getCity());  
  32.      
  33.    System.out.println("Interests: ");  
  34.    for(int i=0;i<=student.getInterests().size()-1;i++){  
  35.     System.out.println(student.getInterests().get(i));  
  36.    }  
  37.      
  38.   } catch (FileNotFoundException e) {  
  39.    e.printStackTrace();  
  40.   }  
  41.     
  42.     
  43.  }  
  44. }  

Output

This is a screenshot from console, we will get an output like this after conversion is done.


Implementation class code

src\com\beingjavaguys\core\JsonImplementation.java

This is nothing but a simple implementation class having main method, we have called our codes here to demonstrate actual conversion.
  1. package com.beingjavaguys.core;  
  2.   
  3. public class JsonImplementation {  
  4.  public static void main(String args[]){  
  5.   
  6.   // java to json conversion  
  7.   JavaToJson javaToJson = new JavaToJson();  
  8.   javaToJson.convertJavaToJson();  
  9.     
  10.   // json to java conversion  
  11.   JsonToJava jsonToJava = new JsonToJava();  
  12.   jsonToJava.jsonToJava();  
  13.     
  14.  }  
  15. }  


In this particular blog we learn how to parse json in java and came across 'How to convert json object to java using Gson' and 'how to convert java object to json using Gson'. In upcoming blogs we will come across more about json implementations in java and other useful stuff. Read more about XML & JSON under SAX DOM Xml parser in Java JDOM2 XML parser in Java JSON,and JAXB - Marshalling & Unmarshalling in Java categories. 

No comments:

Post a Comment