Deserialisieren Liste<Interface> mit jackson
Möchte ich json Deserialisieren der Klasse Foo:
class Foo {
List<IBar> bars;
}
interface IBar {
...
}
class Bar implements IBar {
...
}
IBar hat zwei Implementierungen, aber wenn Deserialisieren möchte ich immer die erste Umsetzung. (Dies sollte im Idealfall machen Sie das problem einfacher, weil es keine Laufzeit-Typ-Prüfung erforderlich)
Ich bin sicher, dass ich schreiben kann, Brauch deserializers, aber gefühlt muss es etwas leichter.
Ich fand diese Anmerkung, die perfekt funktioniert, wenn es keine Liste.
@JsonDeserialize(as=Bar.class)
IBar bar;
List<IBar> bars; //Don't know how to use the annotation here.
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://jackson.codehaus.org/1.2.1/javadoc/org/codehaus/jackson/map/annotate/JsonDeserialize.html#contentAs()
Warum verwenden Sie nicht nur eine
TypeReference
?Zum Beispiel...
Json-Datei
test.json
im/your/path/
:Main-Klasse im Paket
test
:Ausgabe der
main
Methode:Setzen Sie die Anmerkung auf der
IBar
interface-Deklaration anstatt das Feld, sprich: