Spring Boot LocalDate field serialization and deserialization

记录一次完整的解决问题的过程。

问题:实体中需要一个 LocalDate 对象,实体类中创建相关字段后,swagger 调试 该接口 总是 报400 错误,参数格式不正确。

解决:

  1. 400 错误 根本就没有进去方法内,

查看 LocalDate 构造方法

Spring Boot LocalDate field serialization and deserialization_第1张图片
捕获.PNG

swagger 显示

Spring Boot LocalDate field serialization and deserialization_第2张图片
捕获.PNG

按照该格式去 传递 LocalDate 参数,还是 400 错误,参数传递有问题。

  1. 上面没有找到结果之后,想到了 注解 @DateTimeFormat
Spring Boot LocalDate field serialization and deserialization_第3张图片
捕获.PNG

看到 as of Spring 4 and JDK8, to JSR-310 java
猜测 @DateTimeFormat 肯定支持 java8 中的LocalDate, 只是自己不知道怎么用罢了

  1. 最后找到 Jsr310DateTimeFormatAnnotationFormatterFactory


    Spring Boot LocalDate field serialization and deserialization_第4张图片
    捕获.PNG

    确定 存在相关 注解

  2. 在bing 搜索中搜索 Jsr310DateTimeFormatAnnotationFormatterFactory
    最终找到解决方法
    原文地址:https://stackoverflow.com/questions/30871255/spring-boot-localdate-field-serialization-and-deserialization
Spring Boot LocalDate field serialization and deserialization_第5张图片
捕获.PNG

pom 文件中需要添加:

        
            com.fasterxml.jackson.datatype
            jackson-datatype-jsr310
            2.9.4
        
    @DateTimeFormat(pattern = "yyyy-MM-dd", iso = DateTimeFormat.ISO.DATE)
    @JsonSerialize(using = LocalDateSerializer.class)
    @JsonDeserialize(using = LocalDateDeserializer.class)
    private LocalDate birthday;

你可能感兴趣的:(Spring Boot LocalDate field serialization and deserialization)