Jackson nicht zu erkennen @JsonCreator annotation
Ich bin derzeit mit Jackson 1.4.2 und dem Versuch der Deserialisierung von code
Werte (eindeutige Bezeichner für den Typ-Informationen), die übergeben werden von unseren UI-zurück zu den Java-Controller (Servlets).
Gibt es mehrere Arten (z.B. ABCType
, XYZType
usw.) alle erstrecken sich von einem AbstractType
, aber jeden konkreten Typ hat eine statische factory Methode akzeptiert als einzigen parameter eine eindeutige id, und das type-Objekt zurückgibt (name, verbunden Arten, Beschreibung, gültige Abkürzungen, etc.) vertreten durch die id. Die statische Methode innerhalb der einzelnen konkreten Typ (z.B. XYZType
) versehen mit @JsonCreator
:
@JsonCreator
public static XYZType getInstance(String code) {
.....
}
Das problem, dass ich sehe ist jedoch eine Ausnahme, die ausgelöst durch Jackson-mapper versucht zu Deserialisieren der json zu dieser Art:
Verursacht durch: org.codehaus.jackson.Karte.JsonMappingException: Kein default-Konstruktor gefunden, geben Sie [einfache Art, Klasse com.Unternehmen.Typ.XYZtype]: kann nicht instanziiert, die aus Json-Objekt.
Was bin ich hier der @JsonCreator
Kommentar zu statische factory-Methoden (oder hat es zu tun mit Jackson 1.4.2 kämpfen mit den konkreten Typen der sich von einem AbstractType
?)?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die annotation @JsonCreator erfordert die annotation @JsonProperty. Diese Jackson wiki-Seite gibt wenig Informationen, aber es bietet Beispiel-code:
Finden Sie eine ausführlichere Erklärung zu in diesem blog-post.
Deinem Beispiel-code sollte also so Aussehen:
Problem ist, dass Jackson sieht nur die deklarierten Basistyp, und nicht wissen, wo Sie suchen Subtypen.
Da die vollständige polymorphe Art handling wurde Hinzugefügt, in 1.5, was Sie tun müssen, mit 1,4 ist das hinzufügen von factory-Methode in der Basis Klasse-und Versand-Methoden von dort.