У меня есть следующая проблема:
Система:
public class System {
@JsonDeserialize(converter = MyDeserializer.class)
ObservableList<AClass> aClassList;
}
AClass:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "dataType")
@JsonSubTypes({
@JsonSubTypes.Type(value = SubA.class),
@JsonSubTypes.Type(value = SubB.class)
})
public abstract class AClass{
}
SubA:
public class SubA extends AClass{
public SubA(String name) {
}
}
SubB:
public class SubB extends AClass{
public SubB(String name) {
}
}
MyDeserializer:
public class MyDeserializer implements Converter<List<AClass>, ObservableList<AClass>> {
@Override
public ObservableList<AClass> convert(List<AClass> celestialBodyList) {
return FXCollections.observableList(celestialBodyList);
}
@Override
public JavaType getInputType(TypeFactory typeFactory) {
return typeFactory.constructCollectionType(List.class, AClass.class);
}
@Override
public JavaType getOutputType(TypeFactory typeFactory) {
return typeFactory.constructCollectionType(ObservableList.class, AClass.class);
}
}
Когда я пытаюсь десериализовать класс System, я получаю следующую ошибку:
com.fasterxml.jackson.databind.JsonMappingException: Cannot find a deserializer for non-concrete Collection type [collection type; class javafx.collections.ObservableList, contains [simple type, class AClass]]
Как вы можете видеть, Джексон не может найтиdeserializer, хотя я определил один с помощью аннотации.
Надеюсь, кто-то может мне помочь с этим.