今天,在开发中遇到一个问题
Gson在反序列化的时候,遇到long类型的时间就会抛出出一个错误,经过查阅资料和请教大佬后,已解决
错误重现:
1.存入redis序列化的时候,对象类型中有个一个 Date类型,被序列化成了long类型
2.在反序列化的时候,抛出错误
Invalid time zone indicator
解决方案
static GsonBuilder gsonBuilder;
static {
gsonBuilder = new GsonBuilder().registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {
@Override
public Date deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
return new Date(jsonElement.getAsJsonPrimitive().getAsLong());
}
});
}
这里添加一个反序列化的适配器, 在处理Date类型时就把json中的value当做long来获取,然后进行转换
网友评论