拥有包含各种字段的班级DocumentMapping
。其中一个字段是类BinaryDocumentMapping
,它是抽象的。 BinaryDocumentMapping
扩展了3个其他类ExcelDocumentMapping
,XMLDocumentMapping
和CSVDocumentMapping
。
所以我有:
public class DocumentMapping{
@JsonSubTypes({ @JsonSubTypes.Type(value = ExcelDocumentMapping.class, name = "EXCEL"),
@JsonSubTypes.Type(value = CsvDocumentMapping.class, name = "CSV"), @JsonSubTypes.Type(value = XmlDocumentMapping.class, name = "XML") })
private BinaryDocumentMapping binary = null;
其中
public abstract class BinaryDocumentMapping
implements Serializable {
和
@JsonTypeName("CSV")
public class CsvDocumentMapping
序列化工作正常,但在将json读入对象时遇到问题:
mapper.reader().withType(DocumentMapping.class).readValue(jsonData);
抛出
com.fasterxml.jackson.databind.JsonMappingException
:无法构建com.documentmapping.BinaryDocumentMapping
的实例,问题: 抽象类型要么需要映射到具体类型,要有自定义 反序列化器,或者使用其他类型信息进行实例化
有没有办法根据类型反序列化到具体类?