Benutzerdefinierte Deserialisierung über die reflektive Deserialisierung mit Jackson

8

Ich möchte einen benutzerdefinierten Code ausführen, wenn ich einen bestimmten Typ mit Jackson 1.9 deserialisiere. Ich möchte jedoch nicht den gesamten Deserializer manuell schreiben, sondern nur das Standardverhalten hinzufügen. Der Versuch, dies in einer JsonDeserializer auf naive Weise zu tun, führt jedoch zu einer unendlichen Rekursion. Momentan verwendet mein Ansatz ein völlig separates ObjectMapper , aber das fühlt sich an wie ein riesiger Hack.

%Vor%     
Tavian Barnes 31.01.2014, 00:31
quelle

2 Antworten

2

Die polymorphe Deserialisierung sollte in der Lage sein, den Typ der Eingabe vom Inhalt der Eingabe abzuleiten. Wenn Sie dafür die benutzerdefinierte Deserialisierung benötigen, können Sie dies über Anmerkungen erreichen. Siehe dieses Beispiel als Referenz.

(Entschuldigung dafür, dass ich die eigentliche Frage nicht beantworte; das beantwortet, was ich aus der Bemerkung des Posters auf die "root" -Frage verweise).

    
Paul Hicks 04.02.2014, 00:34
quelle
1

Wenn Sie dieses spezielle Verhalten nur für eine Klasse implementieren möchten, können Sie einen zusätzlichen Typ mit denselben Eigenschaften erstellen. Ich bin nicht sicher, dass dies eine echte Antwort auf Ihre Frage ist, aber sehen Sie sich mein Beispiel an. POJO-Klasse mit Eigenschaft:

%Vor%

Deserializer mit innerem Typ:

%Vor%

Und einfache Verwendung:

%Vor%

Ich denke, das ist ein bisschen weniger Hack als dein, aber es ist immer noch Hack.

    
Michał Ziober 09.02.2014 20:06
quelle

Tags und Links