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

SpringBoot插入含LocalDate类型dateOfBirth字段数据时出现java.time.LocalDate报错如何解决

问题原因
  • 核心原因是Java 8引入的LocalDate属于JSR310日期时间类型,SpringBoot默认集成的Jackson序列化框架没有为该类型配置默认的字符串反序列化规则,无法直接将请求体中的字符串格式日期(如2024-05-20)自动转换为LocalDate类型对象,因此接口接收参数时会抛出反序列化失败异常。
  • 次要可能原因:低版本SpringBoot没有内置Jackson对JSR310日期类型的支持依赖,或者请求传入的日期格式和预期格式不匹配。
解决方案

根据项目场景选择以下任意一种方案即可:

方案1:字段单独指定日期格式(适合个别字段有特殊格式需求的场景)

在UserSaveRequest类的dateOfBirth字段上添加注解,指定日期解析规则:

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

@Getter
@Setter
public class UserSaveRequest {
    // 其他字段省略
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate dateOfBirth;
}

方案2:全局配置统一日期格式(适合项目所有日期字段使用同一种格式的场景)

直接在SpringBoot配置文件中添加全局Jackson配置,无需单独给字段加注解:

application.yml配置

spring:
  jackson:
    date-format: yyyy-MM-dd
    time-zone: GMT+8
    serialization:
      write-dates-as-timestamps: false

application.properties配置

spring.jackson.date-format=yyyy-MM-dd
spring.jackson.time-zone=GMT+8
spring.jackson.serialization.write-dates-as-timestamps=false

方案3:手动注册JSR310序列化模块(适合低版本SpringBoot缺失对应依赖的场景)

首先引入Jackson对JSR310的支持依赖(高版本SpringBoot的spring-boot-starter-web已经自带,可跳过该步):

<!-- Maven依赖 -->
<dependency>
    <groupId>com.fasterxml.jackson.datatype</groupId>
    <artifactId>jackson-datatype-jsr310</artifactId>
</dependency>

然后添加Jackson配置类,注册日期序列化模块:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class JacksonConfig {
    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper objectMapper = new ObjectMapper();
        // 注册JSR310日期类型处理模块
        objectMapper.registerModule(new JavaTimeModule());
        // 关闭日期转时间戳的默认规则
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        return objectMapper;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:45:11