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

如何在ObjectMapper中为Jackson全局设置LocalTime序列化格式

Jackson全局配置LocalTime序列化格式实现方案

方法1:通用ObjectMapper配置方案(适用所有Java项目)

  • 首先确保项目引入JSR310时间类型处理依赖(Spring Boot项目默认已集成,无需额外引入):
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <version>与项目Jackson核心版本一致即可</version>
</dependency>
  • 初始化ObjectMapper时注册自定义序列化规则:
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

ObjectMapper objectMapper = new ObjectMapper();
// 关闭时间转时间戳的默认规则
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

JavaTimeModule timeModule = new JavaTimeModule();
// 设置全局LocalTime序列化格式,可按需调整pattern
DateTimeFormatter globalTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");
timeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(globalTimeFormatter));

objectMapper.registerModule(timeModule);

该配置优先级低于字段上的@JsonFormat注解,标注了注解的属性会自动优先使用注解指定的格式,无需额外适配,可直接解决注解与全局配置共存的问题

方法2:Spring Boot项目极简配置

如果是Spring Boot 2.4及以上版本,无需手动修改ObjectMapper,直接在配置文件中添加规则即可:

spring:
  jackson:
    time-zone: GMT+8
    serialization:
      write-dates-as-timestamps: false
    # 全局日期格式
    date-format: yyyy-MM-dd HH:mm:ss
    # 全局LocalTime格式
    local-time-format: HH:mm:ss

兼容自定义BeanSerializerModifier方案

如果你需要保留自定义的BeanSerializerModifier,只需要在处理属性的逻辑中优先读取属性上的@JsonFormat配置即可:

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.util.StringUtils;
import java.lang.reflect.Field;
import java.time.format.DateTimeFormatter;

// 处理单个属性序列化逻辑时增加如下判断
JsonFormat formatAnno = field.getAnnotation(JsonFormat.class);
DateTimeFormatter usedFormatter;
if (formatAnno != null && StringUtils.hasText(formatAnno.pattern())) {
    usedFormatter = DateTimeFormatter.ofPattern(formatAnno.pattern());
} else {
    usedFormatter = globalTimeFormatter;
}

内容的提问来源于stack exchange,提问作者Haf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:27:04