InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default

Jackson日期时间配置说明

问题描述

在使用Java 8的LocalDateTimeLocalDateLocalTime等时间类型时,Jackson默认不支持序列化和反序列化,会抛出以下异常:

​​​​​​​InvalidDefinitionException: Java 8 date/time type `java.time

解决方案

已创建JacksonConfig配置类来解决此问题。

配置文件位置

JacksonConfig.java

import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; @Configuration public class JacksonConfig { /** * 日期时间格式 */ private static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; private static final String DATE_PATTERN = "yyyy-MM-dd"; private static final String TIME_PATTERN = "HH:mm:ss"; @Bean @Primary public ObjectMapper objectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); // 注册JavaTimeModule,支持Java 8时间类型 JavaTimeModule javaTimeModule = new JavaTimeModule(); // LocalDateTime序列化和反序列化 javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN))); javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DATE_TIME_PATTERN))); // LocalDate序列化和反序列化 javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DATE_PATTERN))); javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DATE_PATTERN))); // LocalTime序列化和反序列化 javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(TIME_PATTERN))); javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(TIME_PATTERN))); objectMapper.registerModule(javaTimeModule); // 配置序列化特性 // 禁用将日期序列化为时间戳 objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); // 禁用将日期作为时间戳写入 objectMapper.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS); // 配置反序列化特性 // 忽略未知属性 objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); // 允许空对象 objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); return objectMapper; } }

配置内容

  1. 注册JavaTimeModule模块

    • 支持Java 8时间类型的序列化和反序列化
  2. 配置日期时间格式

    • LocalDateTime:yyyy-MM-dd HH:mm:ss
    • LocalDate:yyyy-MM-dd
    • LocalTime:HH:mm:ss
  3. 其他配置

    • 禁用将日期序列化为时间戳
    • 忽略未知属性
    • 允许空对象

使用示例

实体类定义

@Data public class BaseEntity { private Long id; private LocalDateTime createTime; // 自动格式化为 yyyy-MM-dd HH:mm:ss private LocalDateTime updateTime; // 自动格式化为 yyyy-MM-dd HH:mm:ss }

API返回示例

{ "code": 200, "success": true, "data": { "id": 1, "username": "admin", "createTime": "2025-01-15 10:30:00", "updateTime": "2025-01-15 10:30:00" } }

API请求示例

{ "username": "test", "realName": "测试用户", "createTime": "2025-01-15 10:30:00" }

注意事项

  1. 全局配置

    • 所有的LocalDateTimeLocalDateLocalTime字段都会自动应用配置的格式
    • 不需要在每个字段上添加@JsonFormat注解
  2. 自定义格式

    • 如果某个字段需要特殊格式,可以使用@JsonFormat注解覆盖全局配置
    @JsonFormat(pattern = "yyyy/MM/dd") private LocalDate specialDate;
  3. 时区问题

    • 当前配置使用系统默认时区
    • 如需指定时区,可以在@JsonFormat中添加timezone属性
  4. 兼容性

    • 配置已添加到Spring容器中,自动应用于所有HTTP请求和响应
    • 也适用于手动使用ObjectMapper进行序列化和反序列化

相关依赖

<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> </dependency>

此依赖已在pom.xml中配置,Spring Boot会自动管理版本。




​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1164072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何使用SpringAI来实现一个RAG应用系统

RAG原理大模型没有本地私有知识&#xff0c;所以用户在向大模型提问的时候&#xff0c;大模型只能在它学习过的知识范围内进行回答&#xff0c;而RAG就是在用户在提问的时候 将本地与问题相关的私有知识连同问题一块发送给大模型&#xff0c;进而大模型从用户提供的私有知识范围…

环保与水务行业PLC设备远程诊断与维护解决方案

水务行业的泵站、污水处理厂&#xff0c;环保行业的监测站、除污设备等&#xff0c;通常分布广泛、地处偏远。一旦PLC控制系统出现程序故障或参数异常&#xff0c;需要派遣专业工程师长途跋涉现场处理&#xff0c;响应周期长、差旅成本高&#xff0c;且故障期间可能导致工艺中断…

储能系统绝缘监测的技术突破:微电流传感器在直流侧的应用与优化

引言 随着全球储能市场的爆发式增长&#xff0c;系统安全性成为行业关注的焦点。根据中国电力科学研究院数据&#xff0c;2025年储能电站因绝缘故障导致的事故占比高达15%&#xff0c;其中直流侧漏电流监测不足是主要诱因。微电流传感器&#xff08;如基于磁通门或高精度霍尔原…

巴菲特的股东回报政策:股息与回购的平衡

巴菲特的股东回报政策&#xff1a;股息与回购的平衡关键词&#xff1a;巴菲特、股东回报政策、股息、股票回购、平衡策略摘要&#xff1a;本文深入探讨了巴菲特所奉行的股东回报政策&#xff0c;着重分析股息与股票回购之间的平衡关系。通过对相关核心概念的阐述、背后算法原理…

2026年网络安全就业前景怎么样?网络安全工程师多少钱一个月?

前言 网络安全工程师是当今互联网行业中备受瞩目的职业之一。随着网络安全问题的不断增加&#xff0c;对于网络安全专业人才的需求也日益增长。然而&#xff0c;网络安全工程师的薪资水平各地区存在一定的差异。那么&#xff0c;网络安全就业前景如何呢&#xff1f; 一、市场需…

了解串口通信

文章目录 前言一、问题及发展总结 前言 串口通信主要针对抗干扰问题进行的演变 一、问题及发展 串口道信最开始使用TTL电平&#xff0c;抗干扰能力低——>RS232&#xff08;提升电平大小&#xff0c;增加抗干扰能力&#xff09;——>RS485&#xff08;差分线形式继续增…

快速构建您的小程序+APP+H5商城源码系统,并邀请商户入驻

温馨提示&#xff1a;文末有资源获取方式在数字经济蓬勃发展的今天&#xff0c;一个能够同时支撑自营、平台化和技术服务业务的电商系统&#xff0c;是开拓多元收入流的强大引擎。我们隆重介绍一款专为商业模式创新而设计的电商源码系统&#xff0c;它不仅功能完备&#xff0c;…

飞牛 NAS 远程访问卡顿?这份终极配置指南 ,让你的影音库真正“移动”起来

目录你真正要解决的&#xff0c;不是“能不能连上”配置示例&#xff1a;共享影音目录&#xff08;可直接照抄&#xff09;1&#xff09;找到配置文件2&#xff09;写入配置&#xff08;注意缩进&#xff09;安全与回滚&#xff08;建议读完再开&#xff09;3&#xff09;保存并…

AI智能问数系统:让业务人员玩转数据的技术底层

以前业务同事查数据&#xff0c;得求着技术写SQL&#xff0c;一等就是大半天。现在对着AI说句“查下上周各区域销售额Top3”&#xff0c;秒级就出结果带图表——这背后不是AI“猜透了心思”&#xff0c;全靠一套硬核技术在撑场面。作为落地过多个问数系统的产品经理&#xff0c…

leetcode 困难题 871. Minimum Number of Refueling Stops 最低加油次数-内存100

Problem: 871. Minimum Number of Refueling Stops 最低加油次数 解题过程 内存100%&#xff0c;状态数组标记是否被使用&#xff0c;每次从当前能到达的最远的地方&#xff0c;期间所有的加油站选择油最多的站点&#xff0c;不停循环直到可以到达目的地 Code using pr pair&…

大学生未来想要从事网络安全,不知道先学什么应该从哪开始?(末尾附学习路线图)

网络安全从技术层面上主要分为web安全和二进制安全两个大方向&#xff0c;方向不同学习内容也不同的。如果是零基础的话建议从web安全开始。 &#xff08;一&#xff09;Web安全学习内容 1、学习一种或几种编程语言。 网络安全也属于计算机范畴&#xff0c;涉及到IT行业的&…

leetcode 872. Leaf-Similar Trees 叶子相似的树-耗时100

Problem: 872. Leaf-Similar Trees 叶子相似的树 解题过程 耗时100%&#xff0c;前序遍历的&#xff0c;拿到叶子节点&#xff0c;顺序默认从左到右&#xff0c;判断两者是否相等 Code /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNo…

C# winform部署yolo26-seg实例分割的onnx模型演示源码+模型+说明

yolo26已经正式发布了&#xff0c;因此使用C#代码实现YOLO26-seg实例分割部署&#xff0c;首先看yolov11-seg网络结构&#xff0c;发现输出shape是1x116x8400 再来看看yolo26-seg网络结构输出&#xff0c;输出shape是1x300x38 可见yolo11和yolo26输出是不一样的是不能共用代码。…

解读GB/T4857.5跌落测试标准 助力医药包装NMPA注册合规

在医疗器械、生物制药、敷料、疫苗等行业&#xff0c;产品的运输安全直接关系到临床使用效果与患者生命健康&#xff0c;而运输包装作为产品的“防护屏障”&#xff0c;其耐冲击性能至关重要。GB/T4857.5-92《包装 运输包装件 跌落试验方法》作为国内运输包装冲击测试的核心标准…

适合PPT汇报的扁平化图片素材哪里找?10个优质网站推荐!

很多小伙伴在准备PPT汇报时&#xff0c;都会为找不到合适的图片素材而头疼。太复杂的图片容易分散观众注意力&#xff0c;太普通的又显得缺乏专业感。而扁平化设计的图片凭借简洁的线条、明快的色彩和极简的风格&#xff0c;正好能解决这个问题——它们既能突出重点&#xff0c…

2026精选10个商业海报背景图网站:设计师必藏!

对于设计师来说&#xff0c;找一张合适的商业海报背景图简直是日常工作中的“小难题”——既要高清美观&#xff0c;又要符合品牌调性&#xff0c;最好还能免费商用。尤其是在商业场景下&#xff0c;背景图的选择直接影响海报的传播效果和品牌形象。今天&#xff0c;我们就来盘…

基于MATLAB Simulink R2015b平台的三相感应电机动态仿真建模与性能分析

Three_Phase_Induction_Motor&#xff1a;基于MATLAB/Simulink的三相感应电机动态数学建模仿真模型。 仿真条件&#xff1a;MATLAB/Simulink R2015b最近在实验室被三相感应电机的启动电流问题折腾得够呛。这玩意儿空载启动时电流能飙到额定电流的5-7倍&#xff0c;直接把我给整…

VP引导定位软件-平移九点标定

VP引导定位软件-平移九点标定 一 确定通讯协议 Calib,X,Y,第几个点Calib,140,10,1 Calib,140,-10,2 Calib,140,-30,3 Calib,160,10,4 Calib,160,-10,5 Calib,160,-30,6 Calib,180,10,7 Calib,180,-10,8 Calib,180,-30,9二 定义全局变量/// <summary>/// 软件模式/// Loca…

吐血推荐8个一键生成论文工具,研究生轻松搞定论文写作!

吐血推荐8个一键生成论文工具&#xff0c;研究生轻松搞定论文写作&#xff01; 论文写作的救星&#xff0c;AI 工具如何改变研究生的学术生活 在当今信息爆炸的时代&#xff0c;研究生们面对的不仅是繁重的课程任务&#xff0c;还有论文写作带来的巨大压力。传统的写作方式不仅…

救命神器9个AI论文网站,专科生毕业论文格式规范+写作神器推荐!

救命神器9个AI论文网站&#xff0c;专科生毕业论文格式规范写作神器推荐&#xff01; AI 工具让论文写作不再难 对于专科生来说&#xff0c;毕业论文不仅是学业的终点&#xff0c;更是能力的考验。面对格式规范、内容逻辑、语言表达等多重挑战&#xff0c;很多同学感到无从下手…