001package com.thed.util.gson; 002 003import com.google.gson.*; 004 005import java.lang.reflect.Type; 006import java.text.DateFormat; 007import java.text.ParseException; 008import java.text.SimpleDateFormat; 009import java.util.Date; 010import java.util.Locale; 011 012public class CustomDateTypeAdapter implements JsonDeserializer<Date>, JsonSerializer<Date>{ 013 014 private static final Locale EN_US_LOCALE = Locale.US; 015 016 private static final DateFormat[] DATE_FORMATS = new DateFormat[] { 017 SimpleDateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL, EN_US_LOCALE), 018 new SimpleDateFormat("yyyy-MM-dd",EN_US_LOCALE) 019 }; 020 021 public Date deserialize(JsonElement json, Type typeOfT, 022 JsonDeserializationContext context) throws JsonParseException { 023 Date dt=null; 024 for(DateFormat format:DATE_FORMATS) { 025 try { 026 String s = json.getAsJsonPrimitive().getAsString(); 027 dt = format.parse(s); 028 return dt ; 029 } catch (ParseException e) { 030 } 031 } 032 return dt; 033 } 034 035 public JsonElement serialize(Date src, Type typeOfSrc, 036 JsonSerializationContext context) { 037 038 String s = new SimpleDateFormat("yyyy-MM-dd",EN_US_LOCALE).format(src); 039 return new JsonPrimitive(s); 040 } 041 042}