Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为使用RESTAPI映射日期的最佳选项_Java_Spring_Resttemplate - Fatal编程技术网

Java 为使用RESTAPI映射日期的最佳选项

Java 为使用RESTAPI映射日期的最佳选项,java,spring,resttemplate,Java,Spring,Resttemplate,我需要使用Java/Spring(RestTemplate)使用RESTAPI。 在对Postman进行了一些冒烟测试之后,我看到dates字段具有这种结构 "clipStartDate": { "__type": "Date", "iso": "2010-09-14T00:00:00.000Z" } 我尝试使用java.time.LocalDateTime在DTO中映射此字段。 但我得

我需要使用Java/Spring(RestTemplate)使用RESTAPI。 在对Postman进行了一些冒烟测试之后,我看到dates字段具有这种结构

"clipStartDate": {
  "__type": "Date",
  "iso": "2010-09-14T00:00:00.000Z"
}
我尝试使用java.time.LocalDateTime在DTO中映射此字段。 但我得到了一个序列化异常。(org.springframework.http.converter.httpmessagenoteradableexception:JSON解析错误:无法构造
java.time.LocalDateTime
的实例)


这种情况下的最佳实践是什么?

您应该使用
java.time.Instant
,它将正确映射。您问题中的格式是
java.time.Instant
,因此将该字段定义为
Instant
,它应该可以工作

在属性顶部添加
@JsonDeserialize(使用=InstantDeserializer.class)
,如下所示:

@JsonDeserialize(using=InstantDeserializer.class)
private final Instant instant;

您看到的此错误意味着您的
ObjectMapper
配置不正确。在SpringBoot中,这是现成的自动配置,因此如果您使用SpringBoot2.2,此错误将消失

但是,如果出于某种原因您没有这种可能性,那么您需要配置一个带有名为
JavaTimeModule
的附加模块的
ObjectMapper

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

这里有一个补充说明如何进一步定制
ObjectMapper

在这个网站上可能至少有100个关于这个主题的问答,你尝试过搜索一下吗?我看到了6年前的一篇文章,他们正在使用java.util.Date。我想知道是否可以使用Java时代的类。你试过了吗?它不起作用。I get=org.springframework.http.converter.httpMessageNodeTableException:JSON解析错误:无法反序列化
java.util.Date
out-of-START\u对象令牌的实例;比如说你好。我得到了相同的异常org.springframework.http.converter.httpMessageEndableException:JSON解析错误:无法构造
java.time.Instant
的实例(不存在与默认构造类似的创建者):无法从对象值反序列化(没有委托或基于属性的创建者);嵌套异常为com.fasterxml.jackson.databind.exc.InvalidDefinitionException:无法构造
java.time.Instant
(不存在与默认构造类似的创建者):无法从对象值反序列化(无委托或基于属性的创建者)添加
@jsondeseerialize(使用=InstantDeserializer.class)
在属性声明的顶部。您能否共享pom.xml的代码以及围绕
ObjectMapper进行的任何配置?这将有助于更好地了解你的情况。我没有用Maven。这个项目正在使用Ant,如果还没有解决,你能分享Spring、Jackson和代码示例/一瞥等框架的版本吗?