Jersey Parsing Java 8 Datum Zeit

8

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?

%Vor% #

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.

    
Imtiaz Mirza 19.04.2015, 22:32
quelle

1 Antwort

12

Paaroptionen, die ich sehe ...

Option 1:

Angenommen, Sie haben JAXB Annotation-Unterstützung mit Jackson als JSON-Provider ...

Sie könnten ein XmlAdapter verwenden. Zum Beispiel

%Vor%

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

%Vor%

Option 2:

Verwenden Sie die Jackson APIs direkt. Bedeutung, verwenden Sie JsonDeserializer und JsonSerializer . Zum Beispiel

%Vor%

Sie können dies auf der Feld- / Eigenschaftsebene anwenden

%Vor%

Oder auf der Ebene ObjectMapper (Sie müssen also nicht überall Anmerkungen hinzufügen)

%Vor%

Was passiert, ist, dass das MessageBodyWriter / MessageBodyReader , das für Ummarshalling / Marshalling verwendet wird, die Methode getContext aufruft, um das ObjectMapper

zu erhalten

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

    %Vor%

    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

AKTUALISIEREN

Siehe auch:

Paul Samsotha 20.04.2015, 02:13
quelle

Tags und Links