Wednesday, December 2, 2015

Converting Java object to or from JSON using Jackson

1. Quick Reference for conversion from Java to JSON or vice-versa..

we will show you how to use Jackson 2.x to convert Java object to / from JSON
 a. Convert Java object to JSON -  writeValue(...)


ObjectMapper mapper = new ObjectMapper(); Staff obj = new Staff(); //Object to JSON in file mapper.writeValue(new File("c:\\file.json"), obj); //Object to JSON in String String jsonInString = mapper.writeValueAsString(obj);
 

b. Convert JSON to Java object, readValue(...)

 
ObjectMapper mapper = new ObjectMapper(); String jsonInString = "{'name' : 'santhosh'}"; //JSON from file to Object Staff obj = mapper.readValue(new File("c:\\file.json"), Staff.class); //JSON from URL to Object Staff obj = mapper.readValue(new URL("http://test.com/api/staff.json"),
Staff.class); //JSON from String to Object Staff obj = mapper.readValue(jsonInString, Staff.class);
 
 
 

2. Jackson 2 Dependency

pom.xml
 <dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.6.3</version>
 </dependency>


3. POJO (Plain Old Java Object)

Convert a Staff object into a JSON formatted string.

Jackson2Example.java
 package com.santhosh.json;

import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Jackson2Example {

 public static void main(String[] args) {
  Jackson2Example obj = new Jackson2Example();
  obj.run();
 }

 private void run() {
  ObjectMapper mapper = new ObjectMapper();

  Staff staff = createDummyObject();

  try {
   // Convert object to JSON string and save into a file directly
   mapper.writeValue(new File("D:\\staff.json"), staff);

   // Convert object to JSON string
   String jsonInString = mapper.writeValueAsString(staff);
   System.out.println(jsonInString);

   // Convert object to JSON string and pretty print
   jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff);
   System.out.println(jsonInString);

  } catch (JsonGenerationException e) {
   e.printStackTrace();
  } catch (JsonMappingException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 private Staff createDummyObject() {

  Staff staff = new Staff();

  staff.setName("mkyong");
  staff.setAge(33);
  staff.setPosition("Developer");
  staff.setSalary(new BigDecimal("7500"));

  List<String> skills = new ArrayList<>();
  skills.add("java");
  skills.add("python");

  staff.setSkills(skills);

  return staff;

 }

}


Output
//new json file is created in D:\\staff.json"

{"name":"santhosh","age":33,"position":"Developer","salary":7500,"skills":["java","python"]}

{
  "name" : "santhosh",
  "age" : 33,
  "position" : "Developer",
  "salary" : 7500,
  "skills" : [ "java", "python" ]
}

5. JSON to Java Object

Read JSON string and convert it back to a Java object.
 
Jackson2Example.java
package com.santhosh.json;

import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

import com.fasterxml.jackson.core.JsonGenerationException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class Jackson2Example {

 public static void main(String[] args) {
  Jackson2Example obj = new Jackson2Example();
  obj.run();
 }

 private void run() {
  ObjectMapper mapper = new ObjectMapper();

  try {

   // Convert JSON string from file to Object
   Staff staff = mapper.readValue(new File("D:\\staff.json"), Staff.class);
   System.out.println(staff);

   // Convert JSON string to Object
   String jsonInString = "{\"name\":\"santhosh\",\"salary\":7500,\"skills\":[\"java\",\"python\"]}";
   Staff staff1 = mapper.readValue(jsonInString, Staff.class);
   System.out.println(staff1);

   //Pretty print
   String prettyStaff1 = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(staff1);
   System.out.println(prettyStaff1);
   
  } catch (JsonGenerationException e) {
   e.printStackTrace();
  } catch (JsonMappingException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}
 
 
Output
Staff [name=santhosh, age=33, position=Developer, salary=7500, skills=[java, python]]

Staff [name=santhosh, age=0, position=null, salary=7500, skills=[java, python]]

{
  "name" : "santhosh",
  "age" : 0,
  "position" : null,
  "salary" : 7500,
  "skills" : [ "java", "python" ]
}
 

1 comment :