使用google的gson自定义日期转换

来源:互联网 发布:cf手游刷枪刷钻石软件 编辑:程序博客网 时间:2024/06/07 03:23

使用google的gson在对日期进行处理时,碰到非法的日期,会出现异常,如DB字段默认值为"0000-00-00 00:00:00",可通过自定义日期解析器来解决,代码如下:


import com.google.gson.*;import java.lang.reflect.Type;import java.util.Date;public class JsonUtils {    private static Gson GSON = null;    static {        GsonBuilder builder = new GsonBuilder();        builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() {            public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws                    JsonParseException {                String dateStr = json.getAsString();
//需要setDateFormat,才能按指定格式返回
if(!dateStr.startsWith("2")){ return null; } return DateUtils.parse(dateStr);//转换为日期 } }).setDateFormat("yyyy-MM-dd HH:mm:ss");//指定日期格式 GSON = builder.create(); } public static Gson getGSON(){ return GSON; } public static <T> T convert(Object source, Class target){ return (T) GSON.fromJson(GSON.toJson(source), target); }}

deserialize方法中按自己的要求处理即可,此处是将所有不是2开头的日期都转为null值

PS:需要指定日期的格式(setDateFormat), json.getAsString()才会按指定格式返回字符串,比如不是2开头的年份,都清空

原创粉丝点击