【问题标题】:Jackson polymorphic behaviour with abstract class具有抽象类的杰克逊多态行为
【发布时间】:2016-06-12 12:41:15
【问题描述】:

有一个包含各种字段的类DocumentMapping。其中一个字段是一个抽象类BinaryDocumentMappingBinaryDocumentMapping 扩展了其他 3 个类 ExcelDocumentMappingXMLDocumentMappingCSVDocumentMapping

所以我有:

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 的实例,问题: 抽象类型要么需要映射到具体类型,要么有自定义 反序列化器,或使用其他类型信息进行实例化

有没有办法根据类型反序列化成具体的类?

【问题讨论】:

标签: java jackson polymorphism


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多