Convert object having date to/from JSON in java (Jackson ObjectMapper example)

By | February 13, 2016
  • Given the user defined object or POJO having date field, we would like to serialize the POJO to JSON.
  • During serialization, we would like save date as a timestamp or ISO format.
  • We will use the Jackson’s ObjectMapper to achieve the conversion.
  • We will create Person class and we will perform the following operations with Person class.
    1. Convert Person Object to JSON
      • Serialize date as time stamp (default serialization)
    2. Convert Person Object to JSON
      • Serialize date parameter as ISO format
    3. Convert the JSON to person object
      • DeSerialize date as timestamp

Jackson ObjectMapper Maven Dependencies


<dependency>
	<groupId>com.fasterxml.jackson.core</groupId> 
	<artifactId>jackson-databind</artifactId>
	<version>2.7.1</version> 
</dependency>

Program – Convert Date to/from timestamp in java (POJO <->JSON)

1.) Person Class:

  • The person class containing date data member.
  • We have overloaded toString method to display content of person object.
package org.learn;

import java.util.Date;

public class Person {
	public String firstName;
	public String lastName;
	public Date dob;
	public Person() {	
	}
	public Person(String firstName, String lastName,
				Date dob) {
		this.firstName = firstName;
		this.lastName = lastName;
		this.dob = dob;
	}
	public String toString() {
	    return "[" + firstName + " " + lastName +
		       " " + dob.getTime() +"]";
	}
}

2.) JSONObjectConverter Class:

We are performing following operation in JSONObjectConverter class.

  1. Convert Person Object to JSON
    • Serialize date as time stamp (default serialization)
  2. Convert Person Object to JSON
    • Serialize date parameter as ISO format
  3. Convert the JSON to person object
    • DeSerialize date as timestamp
package org.learn;

import java.io.IOException;
import java.util.Date;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class JSONObjectConverter 
{
    public static void main( String[] args ) throws IOException
    {
    	ObjectMapper objectMapper = new ObjectMapper();
    	//Set pretty printing of json
    	objectMapper.enable(SerializationFeature.INDENT_OUTPUT);    	
    	
    	Person objPerson = new Person("Mike", "harvey", new Date());
    	
    	//Convert Person object to json
    	String json = objectMapper.writeValueAsString(objPerson);
    	System.out.println("1. Convert Person to JSON - Date as timestamp");
    	System.out.println(json);
    	
    	//Disable the timestamp serialization
    	objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);  
    	
    	json = objectMapper.writeValueAsString(objPerson);
    	System.out.println("2. Convert Person to JSON - Date without timestamp");
    	System.out.println(json);
    	
    	//Convert to json to person object    	
    	System.out.println("3. Deserialize JSON to person object");
    	Person objFromJson = objectMapper.readValue(json, Person.class);
    	System.out.println(objFromJson); 
    }
}

Download Example Code-Jackson Object (Date) to JSON

Output – Date serialization & deserialization in java (POJO <-> JSON)


1. Convert Person to JSON - Date as timestamp
{
  "firstName" : "Mike",
  "lastName" : "harvey",
  "dob" : 1329142874258
}
2. Convert Person to JSON - Date without timestamp
{
  "firstName" : "Mike",
  "lastName" : "harvey",
  "dob" : "2012-02-13T14:21:14.258+0000"
}
3. Deserialize JSON to person object
[Mike harvey 1329142874258]