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大部分情况都是自己蠢造成的。

相关推荐
xin_nai1 小时前
LeetCode热题100(Java)(6)矩阵
java·leetcode·矩阵
geovindu1 小时前
go: Visitor Pattern
开发语言·设计模式·golang·访问者模式
宣宣猪的小花园.1 小时前
C语言重难点全解析:内存管理到位运算
c语言·开发语言·单片机
方安乐5 小时前
python之向量、向量和、向量点积
开发语言·python·numpy
代码AI弗森6 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
Old Uncle Tom6 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
小小小米粒7 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
摇滚侠7 小时前
expdp 查看帮助
java·数据库·oracle
czhc11400756637 小时前
C# 428 线程、异步
开发语言·c#
:1218 小时前
java基础
java·开发语言