Ich habe ein paar von POJOs, die wie folgt aussieht:Jackson benutzerdefinierte Serialisierung unter Frühling 3 MVC
class Items {
List<Item> items;
public List<Item> getItems() {
return items;
}
...
}
class Item {
String name;
Date insertionDate;
...
}
Ich möchte das Date
Feld serialisiert werden in der Lage sein in Item
ein benutzerdefiniertes Format (fügen Sie ein Präfix der Datum, etwas wie "Datum: xxx"), aber ich möchte das nicht immer tun (wie es von anderen Verbrauchern verwendet wird, die dieses Präfix nicht benötigen), nur in bestimmten Fällen.
Wenn ich Item
‚s getInsertionDate()
mit @JsonSerialize(using = CustomDateSerializer.class)
mit Anmerkungen versehen kann ich wahrscheinlich diese Arbeit machen, jedoch, ich möchte nicht, dass tun, da ich nicht immer dieses Feld serialisiert wollen diese Methode verwenden, wird nur in einem bestimmten Fall.
So ideal, ich würde das tun in meinem Controller, der die Serialisierung anpassen will:
@JsonSerialize(using = CustomDateSerializer.class)
public List<Item> getItems() {
....
}
wo CustomDateSerializer extends SerializerBase<Date>
und Jackson würde herausfinden, dass es in den List
mit den Standard-Serializer jedes Element serialisiert werden sollte, und wenn es ein Date
Objekt trifft, sollte es meinen benutzerdefinierten Serializer verwenden. Natürlich funktioniert das nicht, da @JsonSerialize
nicht verwendet wird, aber gibt es eine Möglichkeit, diese Arbeit anders als Item
mit einem Wrapper zu wickeln und diesen Wrapper zu verwenden, wenn ich die benutzerdefinierte Serialisierung möchte? Denk ich darüber falsch und es gibt einen anderen Weg, dies zu tun?
Beachten Sie, dass ich Spring MVC verwende, so dass ich die Serialisierung nicht direkt aufrufen.
Jede Hilfe wäre sehr geschätzt :)
eine Frage: Wenn ich ein separates POJO anstelle von List erstelle, kann ich es irgendwie annotieren, um diese Formatierung auf alle Datumsangaben in der Liste anzuwenden, oder muss ich jedes Date-Objekt separat annotieren? – TheZuck
Sie können die Listeneigenschaft mit Anmerkungen versehen und sie sollte auf alle enthaltenen Datumsangaben (usw.) angewendet werden. – StaxMan
Ich werde es versuchen, wenn ich zu 2.0+, derzeit 1.9.7 und 2.0+ bewegt, ist nicht in der Standard-Maven-Repository noch. Danke für deine Hilfe!! – TheZuck