SpringBoot使用jackson自定义反序列化接收不同格式的日期

本文介绍了一种在SpringBoot中实现日期格式兼容解析的方法,通过自定义JsonDeserializer实现对不同格式日期字符串的反序列化处理,使得同一接口能够接受多种格式的日期输入。

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

一、前言

需求:SpringBoot接口兼容不同格式的日期。

实现方式:继承JsonDeserializer实现自定义的反序列化。

二、源码

DateDeSerializer
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

@Slf4j
public class DateDeSerializer extends JsonDeserializer {

    @Override
    public Object deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException {
        String text = jsonParser.getText();
        return DateUtil.parse(text.replaceAll("-", "/"), "yyyy/MM/dd");
    }
}
DemoDto
@Data
public class DemoDto {

    @ApiModelProperty(value = "日期1", example = "2021/12/17")
    @JsonDeserialize(using = DateDeSerializer.class)
    private Date date1;

    @JsonDeserialize(using = DateDeSerializer.class)
    @ApiModelProperty(value = "日期2", example = "2021-12-17")
    private Date date2;

}

Controller

    @RequestMapping(value = "dateDemo", method = RequestMethod.POST)
    @ApiOperation(value = "日期转换测试-反序列化")
    public Object dateDemo(@RequestBody DemoDto demoDto) {
        log.info(JSONUtil.toJsonStr(demoDto));
        return Result.success(demoDto);
    }

三、实现效果

请求参数

{
	"date1": "2021/12/17",
	"date2": "2021-12-17"
}

控制台输出

{"date2":1639670400000,"date1":1639670400000}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值