使用GSON反序列化Date日期类型失败
产生原因:
在实体类中使用了@SerializedName注解,它的包是:
import com.google.gson.annotations.SerializedName;
而gson序列化的日期类型为年月日时分秒的类型,因此出现错误
解决方法:
将Date类型的引入包有sql切换为util,并自定义了一个反序列化的类,然后使用Gson进行注册使用
public class GsonUtil {
public static Gson createGsonWithDateAdapter() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, (JsonDeserializer<Date>) (json, typeOfT, jsonDeserializationContext) -> {
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(json.getAsString());
} catch (ParseException e) {
throw new RuntimeException(e);
}
});
return gsonBuilder.create();
}
}
使用Gson将Date与Timestamp日期类型分别转换
使用方法:
定义两个类型的序列化格式
将两种类型的序列化给Gson进行注册使用,分别解析其格式进行返回
使用Gson返回值为null的键值对不显示问题
解决方法:
对Gson进行serializeNulls()调用即可