From 583fd83b887e5d426db61123180ad027c738ead6 Mon Sep 17 00:00:00 2001 From: smallchill Date: Tue, 11 Aug 2026 21:31:51 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E5=A4=8DBlade=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=A8=A1=E5=9D=97=E4=B8=8E=E5=AE=98=E6=96=B9=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=A0=87=E8=AF=86=E5=86=B2=E7=AA=81=E5=AF=BC=E8=87=B4?= =?UTF-8?q?Instant=E7=AD=89=E7=B1=BB=E5=9E=8B=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/tool/jackson/BladeJavaTimeModule.java | 9 ++++++++- .../java/org/springblade/core/tool/jackson/JsonUtil.java | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeJavaTimeModule.java b/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeJavaTimeModule.java index c46eb00..ef67bec 100644 --- a/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeJavaTimeModule.java +++ b/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/BladeJavaTimeModule.java @@ -16,6 +16,7 @@ package org.springblade.core.tool.jackson; import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.PackageVersion; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; @@ -32,12 +33,18 @@ import java.time.LocalTime; /** * java 8 时间默认序列化 * + *

+ * 仅覆盖 LocalDateTime、LocalDate、LocalTime 的格式,其余类型由官方 {@link JavaTimeModule} 处理。 + * 模块名须显式声明:SimpleModule 以 Version 的 artifactId 为模块标识,沿用 jsr310 的 PackageVersion + * 会与官方模块同名,被去重逻辑判为重复注册而互相顶替。 + *

+ * * @author L.cm */ public class BladeJavaTimeModule extends SimpleModule { public BladeJavaTimeModule() { - super(PackageVersion.VERSION); + super("BladeJavaTimeModule", PackageVersion.VERSION); this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeUtil.DATETIME_FORMAT)); this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeUtil.DATE_FORMAT)); this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeUtil.TIME_FORMAT)); diff --git a/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/JsonUtil.java b/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/JsonUtil.java index e45365f..6af8629 100644 --- a/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/JsonUtil.java +++ b/blade-core-tool/src/main/java/org/springblade/core/tool/jackson/JsonUtil.java @@ -979,12 +979,12 @@ public class JsonUtil { super.setTimeZone(TimeZone.getTimeZone(ZoneId.systemDefault())); //序列化时,日期的统一格式 super.setDateFormat(new SimpleDateFormat(DateUtil.PATTERN_DATETIME, Locale.CHINA)); - //日期格式化 - super.registerModule(new BladeJavaTimeModule()); //视图注解内省器,让 Jackson 识别 @BladeView super.setAnnotationIntrospector(new BladeViewAnnotationIntrospector()); //注册模块 super.findAndRegisterModules(); + //日期格式化,须后于官方模块注册以覆盖其格式 + super.registerModule(new BladeJavaTimeModule()); } @Override