LocalDate 被序列化为数组

Rub*_*bis 12 arrays json jackson spring-boot localdate

我正在使用 springBoot 开发 REST APi。我在 GET 端点的响应模型中有一个 LocalDate 字段“firstDate”。但是这个 LocalDate 可以在响应的 json 中序列化为数组!

"firstDate": [
        2021,
        3,
        1
      ],
Run Code Online (Sandbox Code Playgroud)

因此,为了使用此 APi,我必须在 DTO 中将此日期定义为数组!这不好!我的 API 响应模型是用 swagger 生成的,所以我不能使用 @JsonFormat(pattern="yyyy-MM-dd")

您能帮助我并告诉我在这种情况下如何正确序列化 LocalDate 吗?

非常感谢。

mor*_*cas 3

我定义为 LocalDateTime 的日期被序列化为数组,如下所示:

"timestamp": [
    2023,
    2,
    15,
    10,
    30,
    45,
    732425200
],
Run Code Online (Sandbox Code Playgroud)

这是我在 WebConfig.java 中所做的:

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {

  // other configs

  @Override
  public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    WebMvcConfigurer.super.extendMessageConverters(converters);
    converters.add(new MappingJackson2HttpMessageConverter(
        new Jackson2ObjectMapperBuilder()
            .dateFormat(new StdDateFormat())
            .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
            .build()));
  }

}
Run Code Online (Sandbox Code Playgroud)

现在一切又好了:

"timestamp": "2023-02-15T10:32:06.5170689",
Run Code Online (Sandbox Code Playgroud)

希望这对您有所帮助。一些帮助我实现这一目标的主题:

在 Spring Rest API 中配置 LocaldateTime

如何自定义 Spring Boot 隐式使用的 Jackson JSON 映射器?

无法使用 Jackson 将 java.time.LocalDate 序列化为字符串