Полиморфизм в аннотациях jacksonа: использование @JsonTypeInfo

Я хотел бы знать, можно ли использовать аннотацию @JsonTypeInfo для интерфейсов. У меня есть набор classов, которые должны быть сериализованы и десериализованы.

Вот что я пытаюсь сделать. У меня есть два classа реализации Sub1 , Sub1 , реализующие MyInt . Некоторые classы моделей имеют ссылку на интерфейс для типов реализации. Я хотел бы десериализовать объекты на основе polymorphismа

 @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT) @JsonSubTypes({ @Type(name="sub1", value=Sub1.class), @Type(name="sub2", value=Sub2.class)}) public interface MyInt{ } @JsonTypeName("sub1") public Sub1 implements MyInt{ } @JsonTypeName("sub2") public Sub2 implements MyInt{ } 

Я получаю следующее JsonMappingException :

Неожиданный токен (END_OBJECT), ожидаемый FIELD_NAME: нужна строка JSON, содержащая идентификатор типа

@ JsonSubTypes.Type должен иметь значение и имя, подобное этому,

  @JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT, property="type") @JsonSubTypes({ @JsonSubTypes.Type(value=Dog.class, name="dog"), @JsonSubTypes.Type(value=Cat.class, name="cat") }) 

В подclassе используйте @JsonTypeName("dog") чтобы назвать это имя.

Значения «собака» и «кот» будут установлены в свойстве «тип».

Давайте будем гением компьютера.