Aktualnie używam jacksona 1.7, który próbuje deserializować obiekt z biblioteki innej firmy.co jest nie tak z moją adnotacją @JsonCreator i MixIn?
Więc skonfigurować ObjectMapper użyć mojej klasy wstawek tak:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.getDeserializationConfig().addMixInAnnotations(com.vividsolutions.jts.geom.Point.class, MixIn.class);
A moja klasa wstawek opatrzone @JsonCreator iz logiką tworzenia wystąpienia Punkt obiekt nie
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));
}}
Ale otrzymuję wyjątek
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?)
Debugowanie pokazuje, że moja klasa MixIn nigdy nie jest wywoływana, myślałem, że musi to być konkretna klasa, ale miała taki sam wynik.
Co robię źle? Co jest nie tak z moją konfiguracją?
Dzięki
Bardzo dziękuję, że ma sens, myślę, że moją jedyną opcją jest serializacji te wszystkie inne atrybuty potrzebne _ (około 3 bardziej złożone obiekty :() _ dla klasy docelowej konstruktor i używaj ich w klasie MixIn, czy mam rację? – maverick
Jeszcze raz dziękuję, w końcu zakończyłem wyłączenie pola podczas deserializacji, ponieważ nie jest już potrzebne. – maverick
posiadanie tego lub coś podobnego byłoby niezwykle pomocne w łatwym deserializacji klas, które nie można modyfikować.Istnieje wiele przypadków ogólnej deserializacji jest po prostu zbyt trudne. – loesak