您的位置:首页 > 其它

Gson 基础教程 —— 自定义类型适配器(TypeAdapter)

2013-01-05 14:28 351 查看

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);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐