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);
}
}
本文是关于Gson的基础教程,重点讲解如何创建和注册自定义类型适配器(TypeAdapter)。通过实现JsonSerializer<T>和JsonDeserializer<T>接口,并提供转换方法,可以对特定类型如Timestamp进行定制化序列化和反序列化操作。
2026

被折叠的 条评论
为什么被折叠?



