001package com.thed.util.gson;
002
003import java.lang.reflect.Type;
004import java.text.SimpleDateFormat;
005import java.util.Date;
006
007import com.google.gson.Gson;
008import com.google.gson.GsonBuilder;
009import com.google.gson.JsonDeserializer;
010import com.google.gson.JsonElement;
011import com.google.gson.JsonPrimitive;
012import com.google.gson.JsonSerializationContext;
013import com.google.gson.JsonSerializer;
014
015public class CustomDateUtil {
016        public static GsonBuilder builder = new GsonBuilder();
017        
018        static {
019        builder.registerTypeAdapter(java.util.Date.class, new JsonSerializer<java.util.Date>() {
020                @Override
021                public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
022                        return new JsonPrimitive(src.getTime());
023                }
024        });
025
026        builder.registerTypeAdapter(java.util.Date.class, new JsonDeserializer<java.util.Date>() {
027                @Override
028                public java.util.Date deserialize(com.google.gson.JsonElement p1, java.lang.reflect.Type p2,
029                        com.google.gson.JsonDeserializationContext p3) {
030                        if(p1.getAsJsonPrimitive().isString()) {
031                                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
032                                try {
033                                        Date date = formatter.parse(p1.getAsString());
034                                        return date;
035                                } catch(Exception exc) {
036                                        exc.printStackTrace();
037                                }
038
039                        }
040                        return new java.util.Date(p1.getAsLong());
041                }
042        });     
043        }
044        
045        public static Gson gson = builder.create();
046}
047