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

Java8+SpringBoot2.7.7中LocalDateTime序列化失败求助

解决SpringBoot2.7.7中LocalDateTime序列化失败问题

已经引入jackson-datatype-jsr310但仍出现序列化异常,可从以下几个方向排查修复:

1. 确认依赖配置正确

SpringBoot 2.7.7默认管理Jackson版本为2.13.x,无需手动指定版本,避免依赖冲突:

<!-- pom.xml中正确引入依赖 -->
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
    <!-- 移除手动指定的version,由SpringBoot parent自动匹配对应版本 -->
</dependency>

若之前手动指定过版本,可能与SpringBoot内置Jackson版本冲突,建议删除version标签。

2. 配置Jackson全局序列化规则

通过配置类或配置文件开启Java8日期类型支持,并指定统一格式:

方式一:自定义Jackson配置类

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.time.format.DateTimeFormatter;

@Configuration
public class JacksonConfig {
    private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        // 配置LocalDateTime序列化格式
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DATE_TIME_FORMAT)));
        objectMapper.registerModule(javaTimeModule);
        return objectMapper;
    }
}

方式二:通过application.yml配置

spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    serialization:
      # 关闭时间戳输出,使用格式化后的字符串
      write-dates-as-timestamps: false
    time-zone: GMT+8

注意write-dates-as-timestamps需设为false,避免将LocalDateTime转为时间戳,同时指定时区防止日期偏移。

3. 检查实体类字段注解

若需对单个字段自定义格式,可在LocalDateTime字段上添加@JsonFormat注解:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;

public class YourEntity {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    // getter、setter方法
}

4. 排查自定义Jackson配置冲突

若项目中存在其他自定义ObjectMapper配置类,可能覆盖了默认的JavaTimeModule注册。确保所有自定义配置都显式注册JavaTimeModule,或使用@Primary注解指定优先使用的ObjectMapper Bean。

5. 检查PageUtils等工具类处理逻辑

如果返回结果是通过PageUtils封装的分页数据,需确认工具类在处理数据时,未对LocalDateTime字段做额外序列化/反序列化操作,导致Jackson规则未生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 09:21:11