Jackson - Wie spezifiziert man eine einzelne Implementierung für die durch Schnittstellen referenzierte Deserialisierung?
Ich will Deserialisieren ein JSON-Objekt mit Jackson. Denn das Ziel ist eine Schnittstelle, die ich angeben muss, welche Implementierung verwendet werden soll.
Könnten diese Informationen gespeichert werden, in der JSON-Objekt, mit der @JsonTypeInfo-Annotation. Aber ich möchte, um anzugeben, die Umsetzung in Quellcode, weil es immer das gleiche.
Ist das möglich?
InformationsquelleAutor der Frage Max Schmidt | 2012-10-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden SimpleAbstractTypeResolver:
InformationsquelleAutor der Antwort David Grant
Es ist ein anderer Ansatz, der funktionieren wird, wenn Sie nur einzelne interface-Implementierung.
Wurde diese Frage beantwortet eine Weile her aber ich möchte Euch noch eine andere option, die nicht erforderlich ist, zu optimieren ObjectMapper und auch viel einfacher dann @JsonTypeInfo annotation.
InformationsquelleAutor der Antwort Ilya Ovesnov
Können Sie
@JsonDeserialize(as = ImplementationClass.class)
auf die Schnittstelle, und alle Verweise werden deserialisiert werden auf die gleiche Weise.Beachten, wenn einer Ihrer Implementierung Klassen ist ein enum, müssen Sie möglicherweise
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
auf die enum als gut.InformationsquelleAutor der Antwort Jason Smiley