使用Gson做java.util.Date的转换,找到了一种方法:
首先要写Date的转化器
package org.ygy.date; import java.lang.reflect.Type; import java.util.Date; import com.google.gson.JsonDeserializationContext; import com.google.gson.JsonDeserializer; import com.google.gson.JsonElement; import com.google.gson.JsonParseException; public class UtilDateDeserializer implements JsonDeserializer<Date> { @Override public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { return new Date(json.getAsJsonPrimitive().getAsLong()); } }
package org.ygy.date; import java.lang.reflect.Type; import java.util.Date; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; public class UtilDateSerializer implements JsonSerializer<Date> { @Override public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { return new JsonPrimitive(src.getTime()); } }
测试:
package org.ygy.date; import java.text.DateFormat; import java.util.Date; import org.junit.Test; import com.google.gson.Gson; import com.google.gson.GsonBuilder; public class DateTest { public static String toJson(Date date) { Gson gson = new GsonBuilder() .registerTypeAdapter(Date.class, new UtilDateSerializer()) .setDateFormat(DateFormat.LONG).create(); return gson.toJson(date); } public static Date fromJson(String json) { Gson gson = new GsonBuilder() .registerTypeAdapter(Date.class, new UtilDateDeserializer()) .setDateFormat(DateFormat.LONG) .create(); return gson.fromJson(json , Date.class); } @Test public void testDate() { String json = toJson(new Date()); System.out.println("json->" + json); Date date = fromJson(json); System.out.println(date.getTime()); } }
结果显示: