首页 > 解决方案 > 映射日期以使用 REST API 的最佳选项

问题描述

我需要使用 Java/Spring (RestTemplate) 使用 Rest API。在用 Postman 做了一些冒烟测试后,我看到日期字段具有这种结构

"clipStartDate": {
  "__type": "Date",
  "iso": "2010-09-14T00:00:00.000Z"
}

我尝试使用 java.time.LocalDateTime 在我的 DTO 中映射这些字段。但我得到一个序列化异常。(org.springframework.http.converter.HttpMessageNotReadableException:JSON 解析错误:无法构造实例java.time.LocalDateTime

在这种情况下,最佳做法是什么?

标签: javaspringresttemplate

解决方案


您看到的此错误意味着您ObjectMapper的配置不正确。在 Spring Boot 中,这是开箱即用的自动配置,因此如果您使用例如 Spring Boot 2.2,此错误将消失。

但是,如果由于某种原因您没有这种可能性,那么您需要ObjectMapper使用一个名为JavaTimeModule.

  @Bean
  public ObjectMapper objectMapper(){
    return new ObjectMapper()
        .registerModule(new JavaTimeModule());
  }

这是一篇补充文章,描述了如何进一步自定义ObjectMapper


推荐阅读