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

使用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开头的年份,都清空

猜你喜欢

转载自blog.csdn.net/cwfreebird/article/details/78604359