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

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

Пример:-

@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.

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