Deserialisieren LocalDateTime mit Jackson JSR310 Modul

Bin ich mit der Bibliothek beschrieben die Jackson-Datentyp JSR310 Seite aber ich bin immer noch Schwierigkeiten haben, es zu arbeiten.

Habe ich Folgendes konfiguriert bean:

@Bean
@Primary
public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new JSR310Module());
    return mapper;
}

Wenn ich mein REST-API der aktuellen format-Ausgabe ist yyyy-MM-dd'T'HH:ss.SSSSSS z.B. 2015-04-11T00:10:38.905847. Diese wird behandelt durch meine AngularJS code gerade fein.

Wenn ich will, etwas zu Unterwerfen, um die REST-API wird das Datum geschrieben, so yyyy-MM-dd'T'HH:mm:ss.SSS'Z' z.B. 2015-04-09T08:30:00.000Z

Jackson hält Klagen über das 'Z' am Ende. Wenn ich sehe, das LocalDateTimeDeserializer in der Dokumentation verwendet die DateTimeFormatter.ISO_LOCAL_DATE_TIME welche kocht, um ISO_LOCAL_DATE'T'ISO_LOCAL_TIME es erwähnt hat es keine override-zone.

Also dachte ich, ich sollte die DateFormat auf die ObjectMapper ich bin zu erstellen:

@Bean
@Primary
public ObjectMapper objectMapper() {
    ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new JSR310Module());
    mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"));
    return mapper;
}

Aber das macht nichts. Ich änderte es, um so etwas einfaches wie yyyy-MM-dd aber die serialisierten Datum blieb im bisherigen format und die Deserialisierung ist nicht beeinflusst entweder.

Was mache ich hier falsch, diese zu arbeiten? Das Datum-format in mein JavaScript-code ist, soweit ich weiß, die ISO-8601-format...

Ich denke, es kann funktionieren, wenn Sie wechseln Sie zu ZoneDateTime.
das funktioniert tatsächlich, vielen Dank. Wenn Sie uns als Antwort werde ich markieren Sie es als richtig. Finde es immer noch seltsam, dass der dateFormat-Einstellung auf dem objectmapper selbst hat absolut keine Wirkung hinsichtlich Serialisierung/Deserialisierung aber mit ZonedDateTime ist einfach genug 🙂
Der ObjectMapper s DateFormat ist nur für die built-in java.util.Datum-Unterstützung, denke ich. Wenn ein Wert mit einem Zeit-zone Hinweis auf einen LocalDateTime ist ein Geruch - Sofortige oder OffsetDateTime (oder sogar ZonedDateTime) mehr anwendbar.

InformationsquelleAutor Mekswoll | 2015-04-10

Schreibe einen Kommentar