Gson的日期格式跨操作系统处理办法
构造模式,创建一个用于构造Gson对象的类,注册日期序列化适配器,和反序列化适配器,确保一致。代码如下。
package com.ccxe.common.utils;import java.text.DateFormat;import com.google.gson.Gson;import com.google.gson.GsonBuilder;public class UtilGsonBuilder {public static Gson create(){GsonBuilder gb=new GsonBuilder();gb.registerTypeAdapter(java.util.Date.class , new UtilDateSerializer()).setDateFormat(DateFormat.LONG);gb.registerTypeAdapter(java.util.Date.class , new UtilDateDeserializer()).setDateFormat(DateFormat.LONG);Gson gson=gb.create();return gson;}}package com.ccxe.common.utils;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<java.util.Date> {public JsonElement serialize(Date src, Type typeOfSrc,JsonSerializationContext context) {return new JsonPrimitive(src.getTime());}}package com.ccxe.common.utils;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<java.util.Date> {public Date deserialize(JsonElement json, Type typeOfT,JsonDeserializationContext context) throws JsonParseException {return new java.util.Date(json.getAsJsonPrimitive().getAsLong()); }}