You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义@MyDateFormat注解失效,LocalDate返回Long格式问题求助

问题解决思路

你的自定义注解未生效,导致LocalDate返回Long格式,核心原因是Jackson对Java 8时间类型的支持配置问题,按以下步骤排查修复:

  • 必须引入Jackson JavaTime模块
    LocalDate属于Java 8新增的时间API,Jackson核心包默认不支持这类类型的序列化,需单独引入依赖:
    Maven配置:
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>匹配你的Jackson版本</version>
</dependency>

Gradle配置:

implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:匹配你的Jackson版本'
  • 确保JavaTimeModule被正确注册
    Spring Boot项目默认会自动注册该模块,但如果自定义了ObjectMapper实例,需手动完成注册:
ObjectMapper objectMapper = new ObjectMapper();
// 注册Java 8时间序列化模块
objectMapper.registerModule(new JavaTimeModule());
// 关闭默认的时间戳序列化规则,强制使用字符串格式输出
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
  • 优化自定义注解(可选)
    LocalDate本身不带时区信息,注解中的timezone = "Europe/Brussels"属于冗余配置,可移除避免干扰:
@Target(ElementType.METHOD)
@Retention(value = RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside
@Documented
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
public @interface MyDateFormat {
}
  • 排查序列化框架是否被替换
    若项目中配置了FastJson等其他序列化框架,Jackson的@JsonFormat注解会失效,此时需切换回Jackson,或改用对应框架的日期格式化注解。

内容的提问来源于stack exchange,提问作者Nunyet Calçada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 15:17:03