Полиморфная десериализация Джексона с пользовательскими критериями

Мне нужно знать, могу ли я десериализовать универсальный объект в определяющий его тип, не имея дополнительного свойства или не упоминая тип в аннотации.

Пример:-

@JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@class")

В вышесказанном я должен упомянуть @class собственность, а другой способ

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
 @JsonSubTypes.Type(value = Dog.class, name = "Dog"),
 @JsonSubTypes.Type(value = Cat.class, name = "Cat")
})

В приведенном выше примере мы определяем подклассы и пользовательский тип.

Использование обычного десериализатора StdDeserializer<T>

Есть ли другой способ сделать это, пожалуйста, скажите мне.

1 ответ

Решение

Если вы можете найти способ определения подтипа объекта из данных JSON, вы можете написать собственный распознаватель TypeId, который будет обрабатывать его для вас. Смотрите Джексон Custom TypeId Resolver.

Другие вопросы по тегам