1,实现一个类型适配器(TypeAdapter)
自定义类型适配器需要实现两个接口:
JsonSerializer<T>
JsonDeserializer<T>
和两个方法:
//序列化
public JsonElement serialize(T src, Type typeOfSrc, JsonSerializationContext context);//反序列化
public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException;其中 JsonElement 的类层次为:

2,注册类型适配器
Gson gson = new GsonBuilder()
.registerTypeAdapter(Timestamp.class, new TimestampAdapter())
.create();3,自己写的一个 Timestamp 类型适配器
package com.gdsc.core.adapter;
import java.lang.reflect.Type;
import java.sql.Timestamp;
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;
/**
* Gson TypeAdapter
* 实现了 Timestamp 类的 json 化
* @author linwei
*
*/
public class TimestampAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> {
@Override
public Timestamp deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
if(json == null){
return null;
} else {
try {
return new Timestamp(json.getAsLong());
} catch (Exception e) {
return null;
}
}
}
@Override
public JsonElement serialize(Timestamp src, Type typeOfSrc,
JsonSerializationContext context) {
String value = "";
if(src != null){
value = String.valueOf(src.getTime());
}
return new JsonPrimitive(value);
}
}
版权声明:本文为magicboylinw原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。