Springboot采用FastJson2作为MessageConverter时,配置的全局日期类型序列化转换BUG

核心异常内容

Pattern letter count must be 2: V at java.base/java.time.format.DateTimeFormatterBuilder.parsePatter

背景

我的Springboot工程使用FastJson2代替jackson

在实现WebMvcConfigurer的configureMessageConverters方法时,修改FastJSON2为MessageConverter。为了方便,我全局配置了日期格式转换规则,这样我无需在各个ResponseVO的日期类型的属性上写@JSONField(format = "yyyy-MM-dd HH:mm:ss")了。

但是直到有一天报错了。

BUG原因和解决办法

原因

我在设置格式的时候代码如下,我写了cn.hutool.core.date.DatePattern.NORM_DATETIME_FORMATTER.toString(),我以为它的值是"yyyy-MM-dd HH:mm:ss"

java 复制代码
 fastJsonConfig.setDateFormat(DatePattern.NORM_DATETIME_FORMATTER.toString());

但实际上它的值是"Value(YearOfEra,4,19,EXCEEDS_PAD)'-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)' 'Value(HourOfDay,2)':'Value(MinuteOfHour,2)':'Value(SecondOfMinute,2)"

解决办法

应该用DatePattern.NORM_DATETIME_PATTERN,它才是字符串"yyyy-MM-dd HH:mm:ss"。

总结

果然BUG大部分情况都是自己蠢造成的。

相关推荐
heartbeat..5 小时前
Redis 中的锁:核心实现、类型与最佳实践
java·数据库·redis·缓存·并发
5 小时前
java关于内部类
java·开发语言
好好沉淀5 小时前
Java 项目中的 .idea 与 target 文件夹
java·开发语言·intellij-idea
gusijin5 小时前
解决idea启动报错java: OutOfMemoryError: insufficient memory
java·ide·intellij-idea
To Be Clean Coder5 小时前
【Spring源码】createBean如何寻找构造器(二)——单参数构造器的场景
java·后端·spring
lsx2024065 小时前
FastAPI 交互式 API 文档
开发语言
吨~吨~吨~5 小时前
解决 IntelliJ IDEA 运行时“命令行过长”问题:使用 JAR
java·ide·intellij-idea
你才是臭弟弟5 小时前
SpringBoot 集成MinIo(根据上传文件.后缀自动归类)
java·spring boot·后端
短剑重铸之日5 小时前
《设计模式》第二篇:单例模式
java·单例模式·设计模式·懒汉式·恶汉式
VCR__5 小时前
python第三次作业
开发语言·python