Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
时间戳反序列化失败,返回“0”;无法转换类型为';java.lang.String';至所需类型';java.time.Instant'&引用;_Java_Json_Spring Boot_Jackson_Deserialization - Fatal编程技术网

时间戳反序列化失败,返回“0”;无法转换类型为';java.lang.String';至所需类型';java.time.Instant'&引用;

时间戳反序列化失败,返回“0”;无法转换类型为';java.lang.String';至所需类型';java.time.Instant'&引用;,java,json,spring-boot,jackson,deserialization,Java,Json,Spring Boot,Jackson,Deserialization,我希望有人能指出我遗漏了什么 我有一个SpringBoot2应用程序,带有一个rest控制器,它接受一些请求参数,其中一个是java.time.Instant,即“@RequestParam(“offset”)Instant offset”。我希望它可以从基于秒或毫秒的时间戳反序列化,比如1604303073000 然而,我总是得到提到的异常,它来自org.springframework.format.datetime.standard.InstantFormatter.parse(Instan

我希望有人能指出我遗漏了什么

我有一个SpringBoot2应用程序,带有一个rest控制器,它接受一些请求参数,其中一个是java.time.Instant,即“@RequestParam(“offset”)Instant offset”。我希望它可以从基于秒或毫秒的时间戳反序列化,比如1604303073000

然而,我总是得到提到的异常,它来自org.springframework.format.datetime.standard.InstantFormatter.parse(InstantFormatter.java:50)~[spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]

将瞬间序列化为基于秒或毫秒的时间戳可以很好地使用以下参数:

jackson:
  serialization:
    write-dates-as-timestamps: true
    write-date-timestamps-as-nanoseconds: true
  deserialization:
    read-date-timestamps-as-nanoseconds: false
但是相反的方式似乎对反序列化没有任何影响,不管它设置为true还是false。Spring显然只是试图将我的时间戳应用到错误的格式化程序


我能找到的所有类似的问题似乎都暗示这是一个不需要动脑筋的默认行为,但这已经导致了一些令人沮丧的尝试和错误。

问题是,jackson没有java.time的默认序列化程序和反序列化程序,您必须手动添加它们,包括依赖项(在链接的问题中提到),并注册
JavaTimeModule()
对于objectmapperIm,我非常确定他们至少有序列化程序,因为我使用它们处理带有所示yaml配置的实例。我将检查您的建议,thx!somwehow,无论我做什么,它都不会使用jackson反序列化器。我有依赖关系,创建了一个带有序列化器和反序列化器的自定义jackson模块,并配置了MappingJackson2HttpMessageConverter。但是仍然使用默认的InstnatFormatter。您添加了我提到的
JavaTimeModule
吗?您自己实例化
ObjectMapper
时也要小心。它可能不是spring使用的。请确保将模块和反序列化程序注册到
ObjectMapper
-springanyways使用的bean,感谢您的支持!=)问题是,jackson没有用于
java.time
的默认序列化程序和反序列化程序,您必须手动添加它们,包括依赖项(在链接问题中提到),并注册
JavaTimeModule()
对于objectmapperIm,我非常确定他们至少有序列化程序,因为我将它们用于显示yaml配置的实例。我会看看你的建议,谢谢!不管我做什么,它都不会使用jackson反序列化程序。我有依赖项,创建了一个带有序列化器和反序列化器的自定义Jackson模块,并配置了MappingJackson2HttpMessageConverter。但是仍然使用默认的InstnatFormatter。您添加了我提到的
JavaTimeModule
吗?在自己实例化
ObjectMapper
时也要小心。它可能不是spring使用的。确保将模块和反序列化程序注册到springanyways使用的
ObjectMapper
-bean,谢谢您的支持!)