抽象类实现的接口的Java到JSON多态序列化

抽象类实现的接口的Java到JSON多态序列化,java,json,serialization,jackson,Java,Json,Serialization,Jackson,我必须将Java对象序列化为JSON,但其中一个类属性的类型扩展了实现接口的抽象类。我试图使用jackson来保存属性的子类型,但是它抛出了一个异常,我不理解为什么。我能做什么是否存在另一种更干净/更好的方法来实现此目的? 这是我的抽象类注释: @JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include =JsonTypeInfo.As.PROPERTY,property = "type") @JsonSubTypes({ @Type(value =

我必须将Java对象序列化为JSON,但其中一个类属性的类型扩展了实现接口的抽象类。我试图使用jackson来保存属性的子类型,但是它抛出了一个异常,我不理解为什么。我能做什么是否存在另一种更干净/更好的方法来实现此目的?

这是我的抽象类注释:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include =JsonTypeInfo.As.PROPERTY,property = "type")
@JsonSubTypes({
    @Type(value = SubTypeWhichExtendsAbstract.class, name=BonusToTerritoryTower") })
public abstract class MyAbstrClass implements MyInterface{
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({@Type(value = ValueBonus.class, name = "ValueBonus") })
public interface MyInterface {
接口注释:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include =JsonTypeInfo.As.PROPERTY,property = "type")
@JsonSubTypes({
    @Type(value = SubTypeWhichExtendsAbstract.class, name=BonusToTerritoryTower") })
public abstract class MyAbstrClass implements MyInterface{
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({@Type(value = ValueBonus.class, name = "ValueBonus") })
public interface MyInterface {
Eclipse给出的错误

Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class ...]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)

这是一个由反序列化产生的错误。Jackson不会在序列化期间尝试创建新的自定义对象