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

本文介绍如何使用Google的Gson库,在遇到非法日期(如'0000-00-00 00:00:00')时,通过自定义日期解析器避免异常。通过这种方式,可以更优雅地处理数据库字段的默认值问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值