【问题标题】:Return ISO-8601 dates with custom ObjectMapper in Spring Boot 2在 Spring Boot 2 中使用自定义 ObjectMapper 返回 ISO-8601 日期
【发布时间】:2020-10-19 10:51:04
【问题描述】:

我希望我的 LocalDateTimes 从我的 Spring REST 控制器作为 ISO-8601 字符串(例如 "2020-10-12T10:57:15Z")返回。这以前有效,但现在我使用的是自定义 Jackson2 ObjectMapper,这些日期改为以数组形式返回:[2020, 10, 12, 10, 57, 15, 200000000]

为什么会发生这种情况?如何自定义 ObjectMapper 同时仍返回 ISO-8601 日期?

【问题讨论】:

    标签: java spring spring-boot java-time jackson-databind


    【解决方案1】:

    JacksonAutoConfiguration 创建一个 ObjectMapper 并关闭 WRITE_DATES_AS_TIMESTAMPS 功能,该功能将 LocalDateTimes 作为 ISO-8601 字符串返回。当您提供自定义 ObjectMapper 时,此默认自动配置将关闭。

    这可以通过提供Jackson2ObjectMapperBuilderCustomizer 而不是提供自定义ObjectMapper 来解决。 JacksonAutoConfiguration 将使用此 bean 来自定义 ObjectMapper,同时保持自动配置的行为,例如关闭 WRITE_DATES_AS_TIMESTAMPS 功能。

    @Configuration
    public class Config {
        @Bean
        public Jackson2ObjectMapperBuilderCustomizer objectMapperBuilderCustomizer() {
            return jacksonObjectMapperBuilder -> {
                // Customize the ObjectMapper while maintaining the auto-configuration
            };
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-20
      • 2019-04-21
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 2013-02-03
      • 2021-07-27
      相关资源
      最近更新 更多