Dies ist meine Benutzerklasse und ich speichere ISO-kompatible Datumsangaben in meiner Datenbank.
%Vor%Hier ist mein Jersey Controller:
%Vor% Wie kann ich ein Datetime-Format wie dieses in Jersey konsumieren? Ist es möglich, eine Datenzeit String
zu senden und Java 8 Datum Zeit Objekt automatisch zu erstellen?
Aktualisierung:
Ich benutzte Frühlingsstiefel Jersey und hatte andere jsr Pakete
%Vor%Also habe ich alle Pakete entfernt, außer aus Spring-Boot-Jersey-Paket. Verwenden Sie diese Annotation für LocalDateTime
%Vor%Auf diese Weise kann ich ISODate konsumieren und ISODate () in mongodb speichern und voll formatiertes mongodb LocalDateTime zum Frontend erzeugen.
Problem gelöst.
Angenommen, Sie haben JAXB Annotation-Unterstützung mit Jackson als JSON-Provider ...
Sie könnten ein XmlAdapter
verwenden. Zum Beispiel
Siehe Instant API für weitere Informationen.
Dann können Sie einfach das Feld / die Eigenschaft mit dem Adapter annotieren
%Vor% Sie können die Annotation auch auf der Paketebene deklarieren, sodass alle Verwendungen im Paket den Adapter verwenden, ohne Anmerkungen hinzufügen zu müssen. Sie tun dies in einer Datei namens package-info.java
im Paket
Verwenden Sie die Jackson APIs direkt. Bedeutung, verwenden Sie JsonDeserializer
und JsonSerializer
. Zum Beispiel
Sie können dies auf der Feld- / Eigenschaftsebene anwenden
%Vor% Oder auf der Ebene ObjectMapper
(Sie müssen also nicht überall Anmerkungen hinzufügen)
Was passiert, ist, dass das MessageBodyWriter
/ MessageBodyReader
, das für Ummarshalling / Marshalling verwendet wird, die Methode getContext
aufruft, um das ObjectMapper
Hinweis:
Die obigen Lösungen analysieren das Format 2007-12-03T10:15:30.00Z
, wie in Instant.parse
und wird in das gleiche Format serialisiert, wie in DateTimeFormatter.ISO_INSTANT
Das obige Szenario geht davon aus, dass Sie Jackson als Serializer verwenden. Ich benutzte die folgende Abhängigkeit (mit Jersey 2.16), um
zu testen %Vor% Die Abhängigkeit verwendet JacksonJaxbJsonProvider
für JAXB-Annotationsunterstützung. Wenn Sie eine niedrigere Version von Jersey wie 1.x verwenden, sollte die jersey-json
- Abhängigkeit JAXB - Annotationsunterstützung bieten, wenn Sie die POJO - Zuordnungsfunktion aktivieren. Alternativ können Sie für Jersey 1.x, wenn Sie Jackson 2 verwenden möchten, diese Abhängigkeit verwenden
was tatsächlich von jersey-media-json-jackson
verwendet wird. Sie könnten also explizit JacksonJaxbJsonProvider
registrieren oder das Jackson-Paket ( com.fasterxml.jackson.jaxrs.json
) hinzufügen, um zu scannende Pakete aufzulisten
Siehe auch: