Wie serialisieren Joda DateTime mit Jackson JSON processor?
Wie bekomme ich Jackson zu serialisieren, meine Joda DateTime-Objekt nach einem einfachen Muster (wie "dd-MM-yyyy")?
Ich versucht habe:
@JsonSerialize(using=DateTimeSerializer.class)
private final DateTime date;
Habe ich auch versucht:
ObjectMapper mapper = new ObjectMapper()
.getSerializationConfig()
.setDateFormat(df);
Dank!
- Die beiden oben sollten eigentlich auch funktionieren (@JsonSerialize sollte bedeuten, dass Feld serialisiert werden; und das Datum-format sollte auch bewerben Joda), so möchten Sie vielleicht eine Datei Jira-bug in jira.codehaus.org/browse/JACKSON.
- Ich merke, diese Frage ist von eine Weile zurück, aber für die Zukunft, objectMapper.getSerializationConfig().setDateFormat(df) ist jetzt veraltet. objectMapper.setDateFormat(df) wird nun vorgeschlagen.
- Siehe auch stackoverflow.com/questions/27952472/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese sehr einfach geworden mit Jackson 2.0 und die Joda-Modul.
Maven-dependency:
Code und Dokumentation:
https://github.com/FasterXML/jackson-datatype-joda
Binaries:
http://repo1.maven.org/maven2/com/fasterxml/jackson/datatype/jackson-datatype-joda/
DateTime
mit Jackson 22.8.8
?In das Objekt mappt:
In CustomDateSerializer:
org.codehaus.jackson
eher alscom.fasterxml.jackson.core
. Mit dem zweiten Paket nicht für mich arbeiten. In der Tat, meine Jersey-app hat nicht einmal zu respektieren, die@JsonSerialized
annotation.Als @Kimble hat gesagt, mit Jackson 2, unter Verwendung der Standard-Formatierung ist sehr einfach: registrieren Sie sich einfach
JodaModule
auf IhreObjectMapper
.Für die benutzerdefinierte Serialisierung/de-Serialisierung von
DateTime
, die Sie benötigen, um Ihre eigenenStdScalarSerializer
undStdScalarDeserializer
; es ist ziemlich kompliziert, aber trotzdem.Zum Beispiel, hier ist ein
DateTime
serializer, verwendet dieISODateFormat
mit der UTC-Zeitzone:Und der entsprechenden de-serializer:
Dann binden Sie diese zusammen mit einem Modul:
Dann registrieren Sie das Modul auf Ihre
ObjectMapper
:https://stackoverflow.com/a/10835114/1113510
Obwohl Sie können einen Kommentar für jedes Datumsfeld ist besser zu tun, eine Globale Konfiguration für die Objekt-mapper. Wenn Sie jackson können Sie Ihr spring wie folgt:
Für CustomObjectMapper:
Natürlich " = SimpleDateFormat verwenden können ein beliebiges format Sie benötigen.
setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"));
hat den trick für mich, thxDie einfache Lösung
Den ich je erlebt habe ähnliches problem und meine Lösung ist viel klarer als oben.
Ich benutzte einfach das Muster in
@JsonFormat
annotationGrundsätzlich meine Klasse hat eine
DateTime
Feld, also habe ich eine Anmerkung, um die getter:Ich serialisieren der Klasse mit
ObjectMapper
Wir verwenden Jackson 2.5.4
Mittlerweile Jackson schreibt die Joda-Modul automatisch, wenn die JodaModule ist im classpath. Ich habe gerade ein jackson-datatype-joda zu Maven und es funktionierte sofort.
JSON-Ausgabe:
Für diejenigen, die mit Spring Boot, müssen Sie die module an Ihren Kontext an und es wird Hinzugefügt werden, um Ihre Konfiguration wie diese.
Und wenn Sie möchten, verwenden Sie die neuen java8-Zeit-Modul jsr-310.
Scheint es, dass für Jackson 1.9.12 gibt es solche Möglichkeit nicht standardmäßig, weil:
Dieser Klasse serialisiert Daten mithilfe von toString () - Methode von Joda DateTime.
Ansatz von Rusty Kuntz funktioniert perfekt für meinen Fall.
Ich bin mit Java 8 und dieser arbeitete für mich:
fügen Sie die Abhängigkeit auf pom.xml
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.4.0</version>
</dependency>
hinzufügen und JodaModule auf Ihre ObjectMapper
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());