Attualmente sto usando il jackson 1.7 che tenta di deserializzare un oggetto da una libreria di terze parti.Cosa c'è di sbagliato nella mia annotazione @JsonCreator e MixIn?
Così ho creato il mio ObjectMapper di usare la mia classe intermedia in questo modo:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.getDeserializationConfig().addMixInAnnotations(com.vividsolutions.jts.geom.Point.class, MixIn.class);
E la mia classe intermedia annotato con @JsonCreator e con la logica per istanziare il Point oggetto ci
public class MixIn {
private static final GeometryFactory geometryFactory = GeometryFactoryFactory.getGeometryFactory();
@JsonCreator
public static Point createPoint(@JsonProperty("x")double x, @JsonProperty("y")double y) {
return geometryFactory.createPoint(new Coordinate(x, y));
}}
Ma io sto ottenendo l'eccezione
No suitable constructor found for type [simple type, class com.vividsolutions.jts.geom.Point]: can not instantiate from JSON object (need to add/enable type information?)
Il debug mostra che la mia classe MixIn non viene mai chiamata, ho pensato che doveva essere una classe concreta ma aveva lo stesso risultato.
Cosa sto sbagliando? Cosa c'è di sbagliato nella mia configurazione?
Grazie
grazie mille che abbia un senso, credo che la mia unica opzione è quella di serializzare tutte quelle altre qualità necessarie _ (circa 3 oggetti più complessi :() _ per la classe obiettivo costruttore e li uso nella classe MixIn. Ho ragione? – maverick
Grazie ancora, ho finalmente finito di escludere il campo mentre la deserializzazione non è più necessaria. – maverick
avere questo, o qualcosa di simile, sarebbe incredibilmente utile per una facile deserializzazione delle classi che non può essere modificato. Ci sono molti casi in cui la deserializzazione generale è troppo difficile. – loesak