2016-04-14 22 views
0

我正在構建一個Spring HATEOAS應用程序。當我發佈包含ISO8601日期的JSON文件獲取:如何在Spring HATEOAS中反序列化java.time.LocalDate?

無法讀取HTTP消息:org.springframework.http.converter.HttpMessageNotReadableException:無法讀取文件:文本「2016-05-13T21:00:00.000 Z'無法解析,在索引10處找到未解析的文本(通過引用鏈:com.my.package.web.resources.MyResource [「startDate」]);嵌套異常是com.fasterxml.jackson.databind.JsonMappingException:文本'2016-05-13T21:00:00.000Z'無法解析,在索引10處找到未解析的文本(通過引用鏈:com.my.package.web。 resources.MyResource [ 「的startDate」])

我在我的類路徑傑克遜 - 數據類型 - jsr310的建議here。我也嘗試使用默認和自定義反序列化器在相應的字段上明確聲明@JsonDeserialize/@JsonSerialize。有任何想法嗎?

+0

您是否嘗試過使用JavaTimeModule註冊的ObjectMapper提供Spring?我認爲它應該和你正確放置的@ JsonDeserialize/@ JsonSerialize註釋做同樣的事情,但它可以在全局範圍內應用它,並且可以幫助Spring以某種方式處理它(儘管如果它確實如此,我會感到驚訝 - 它應該在功能上等同於那些註解) – pedorro

+0

@pedorro我試圖註冊一個ObjectMapper並設置m.deserializerByType(LocalDate.class,LocalDateDeserializer.INSTANCE)沒有運氣。 – Orestis

+0

'mapper.registerModule(new JavaTimeModule());'應該隱式處理所有jsr310類型。 – pedorro

回答

0

找到解決方案。原來我的jackson-dataype-jsr310有點舊(2.6.4),並且日期中的「Z」產生了問題。使用最新版本的lib(2.7.3)修復了這個問題。