- 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 timestamp.
- We will use the Google gson library to achieve the POJO to JSON conversion and vice versa.
- We will create Person class and we will perform the following operations with Person class
- Convert Person Object to JSON string
- Serialize the date as timestamp
- Convert the JSON string to corresponding person object
- DeSerialize the timestamp as Date
- Convert Person Object to JSON string
GSON maven dependency:
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.5</version> </dependency>
Program – Date to / from timestamp conversion (POJO <->JSON)
1.) Person Class:
- The person class containing date data member.
- We have overloaded toString method to print person information.
package org.learn.gson; import java.util.Date; public class Person { public String firstName; public String lastName; public Date date; public String contact; public Person(String firstName, String lastName, Date date, String contact) { this.firstName = firstName; this.lastName = lastName; this.date = date; this.contact = contact; } public String toString() { return "[" + firstName + " " + lastName + " \"" + date.toString() + "\" " +contact +"]"; } }
2.) Date2Json Class:
Date2Json is responsible for performing following operations.
- Convert person object to JSON (serialization).
- We have written custom DateSerializer class, to serialize date as timestamp.
- Convert JSON to person object (Deserialization).
- We have written custom DateSerializer class, to deserialize timestamp as Date.
package org.learn.gson; import java.lang.reflect.Type; import java.util.Date; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import com.google.gson.reflect.TypeToken; class DateDeserializer implements JsonDeserializer { public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return json == null ? null : new Date(json.getAsLong()); } } class DateSerializer implements JsonSerializer { public JsonElement serialize(Date date, Type typeOfSrc, JsonSerializationContext context) { return date == null ? null : new JsonPrimitive(date.getTime()); } } public class Date2Json { public static void main(String[] args) { GsonBuilder gson = new GsonBuilder(); gson.registerTypeAdapter(Date.class, new DateDeserializer()); gson.registerTypeAdapter(Date.class, new DateSerializer()); Gson objGson = gson.setPrettyPrinting().create(); Person objPerson = new Person("Mike","harvey",new Date(),"00186"); // Convert Person object to json String json = objGson.toJson(objPerson); System.out.println("1. Convert Person object to Json"); System.out.println(json); // Convert to json to person object Type listType = new TypeToken() {}.getType(); System.out.println("2. Convert JSON to person object"); Person objFromJson = objGson.fromJson(json, listType); System.out.println(objFromJson); } }
Download Sample Code – GSON Object to JSON
Output – Date serialization & deserialization (POJO <-> JSON)
1. Convert Person object to Json { "firstName": "Mike", "lastName": "harvey", "date": 1454426955623, "contact": "00186" } 2. Convert JSON to person object [Mike harvey "Tue Feb 02 20:59:15 IST 2016" 00186]