千家信息网

SpringBoot-MVC RequestBody中LocalDateTime的自适应配置方法

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"SpringBoot-MVC RequestBody中LocalDateTime的自适应配置方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家
千家信息网最后更新 2026年11月03日SpringBoot-MVC RequestBody中LocalDateTime的自适应配置方法

本篇内容主要讲解"SpringBoot-MVC RequestBody中LocalDateTime的自适应配置方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot-MVC RequestBody中LocalDateTime的自适应配置方法"吧!

请求的json报文中可能会出现 一下几种:

['2019-01-01','2019-01-01 12:03:34','20190101120334']

但是接收的Request实体类日期字段是LocalDateTime类型

LocalDateTime applyDate;

希望的情况是 :

  1. 输入 yyyy-MM-dd HH:mm:ss 、yyyyMMddHHmmss等精确到秒的格式,可以自动被封装LocalDateTime;

  2. 输入 yyyy-MM-dd 、yyyyMMdd等精确到日的格式,也可以被封装成LocalDateTime, HHmmss默认为000000;

默认情况下,是没办法 自动转换的,需要在 ObjectMapper中配置,网上主流的配置如下

@Configuration@Slf4jpublic class MvcConfig implements WebMvcConfigurer {    /**     * 更改jackson默认配置     * @return     */    @Bean    @Primary    public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder){        //日期和时间格式化        JavaTimeModule javaTimeModule = new JavaTimeModule();        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));        javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));        javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss")));        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));        javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));        javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd")));        javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss")));        javaTimeModule.addDeserializer(LocalDateTime.class,new MyLocalDateTimeDeserializer());        objectMapper.registerModule(javaTimeModule);        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);        return objectMapper;    }}

但实际效果是,上面第二种情况没法生效。百度了很多也都是重复内容,无效。google得一答案:

@Configuration@Slf4jpublic class MvcConfig implements WebMvcConfigurer {    /**     * 更改jackson默认配置     * @return     */    @Bean    @Primary    public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder){        ObjectMapper objectMapper = builder.json().build();        SimpleModule simpleModule = new SimpleModule();        simpleModule.addDeserializer(LocalDateTime.class,new MyLocalDateTimeDeserializer());        objectMapper.registerModule(simpleModule);        //忽视请求报文中未匹配到的字段(多余的字段)        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);        return objectMapper;    }}

需要自定义反序列化类

MyLocalDateTimeDeserializer
public class MyLocalDateTimeDeserializer  extends JsonDeserializer {    @Override    public LocalDateTime deserialize(JsonParser parser, DeserializationContext context) throws IOException {        String dateStr = parser.getText();        DateTime dateTime = null;        try{            dateTime = DateUtil.parse(dateStr);        }catch (Exception e){            dateTime = DateUtil.parseDateTime(dateStr.replaceAll("T"," "));        }        Date date = dateTime.toJdkDate();        Instant instant = date.toInstant();        ZoneId zoneId = ZoneId.systemDefault();        LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();        return localDateTime;    }    @Override    public Class handledType() {        return LocalDateTime.class;    }}

deserialize方法的逻辑就靠自己实现了,我这边是借助了hutool工具类进行了简化。

到此,相信大家对"SpringBoot-MVC RequestBody中LocalDateTime的自适应配置方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

配置 方法 内容 字段 情况 格式 精确 实际 报文 日期 学习 封装 输入 实用 更深 主流 兴趣 办法 实体 实用性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南永感互联网科技有限公司 广州百单互联网科技有限公司 互联网科技公司的优势 互联网与科技金融数据 互联网科技金融公司 电子科技大学互联网 丰台科技园 互联网公司 蓝色互联网科技 玖二柒互联网科技公司待遇 岳阳华臻互联网科技有限公司 乌苏新华互联网科技做什么的 济南有互联网科技公司吗 上海钢联属于互联网科技股吗 中国互联网有什么科技 21世纪互联网科技成就 厦门江牛科技互联网 互联网科技平台产品运营 科技和互联网行业的特点 互联网领先科技成果宣传视频 安徽九吞吴互联网科技有限公司 互联网金融监管科技数据 广州互联网络科技有限公司 现代互联网科技股 长沙互联网科技 上海钢联属于互联网科技股吗 从那以后互联网科技有限公司 风投北京互联网科技 抖集互联网科技技术咨询 北京天晋互联网科技有限公司 东风日产互联网科技公司叫什么
0