2016-04-14 9 views
0

Ich baue eine Spring HATEOAS-Anwendung. Wenn ich ein JSON-Dokument mit ISO8601 Daten POST bekommen I:Wie kann ich java.time.LocalDate in Spring HATEOAS deserialisieren?

fehlgeschlagen HTTP-Nachricht zu lesen: org.springframework.http.converter.HttpMessageNotReadableException: Text ‚2016-05-13T21: 00: Dokument kann nicht lesen 00.000 Z 'konnte nicht geparst werden, nicht abgehandelter Text gefunden bei Index 10 (durch Referenzkette: com.my.package.web.resources.MyResource ["startDate"]); verschachtelte Ausnahme ist com.fasterxml.jackson.databind.JsonMappingException: Text '2016-05-13T21: 00: 00.000Z' konnte nicht geparst werden, nicht geparste Text gefunden bei Index 10 (durch Referenzkette: com.my.package.web. resources.MyResource [ "startdate"])

ich habe jackson-Datentyp-jsr310 in meinem classpath als here vorgeschlagen. Ich habe auch versucht, @JsonDeserialize/@JsonSerialize auf die entsprechenden Felder mit Standard-und benutzerdefinierten Deserialisern explizit zu deklarieren. Irgendwelche Ideen?

+0

Haben Sie versucht, Spring einen ObjectMapper mit dem registrierten JavaTimeModule bereitzustellen? Ich denke, das sollte das Gleiche tun wie Ihre richtig platzierten @ JsonDeserialize/@ JsonSerialize-Annotationen, aber es wendet es global an und hilft Spring vielleicht dabei (obwohl tbh ich überrascht wäre, wenn es so wäre - es sollte funktional äquivalent zu diesen sein) Anmerkungen) – pedorro

+0

@pedorro Ich habe versucht, einen ObjectMapper zu registrieren und m.deeserializerByType (LocalDate.class, LocalDateDeserializer.INSTANCE) ohne Glück zu setzen. – Orestis

+0

Was ist mit 'mapper.registerModule (new JavaTimeModule());' Das sollte implizit alle jsr310-Typen behandeln. – pedorro

Antwort

0

Die Lösung gefunden. Stellt sich heraus mein Jackson-dataype-jsr310 war ein bisschen alt (2.6.4) und das "Z" in dem Datum erstellt das Problem. Die Verwendung der neuesten Version der lib (2.7.3) behebt das Problem.

Verwandte Themen