У меня есть интерфейс, который принимает события в своем API. Базовое событие выглядит так:
class Event<T extends Details> {
T details;
}
Пример реализации выглядит следующим образом:
class UpdateEvent extends Event<UpdateDetails> {
@JsonProperty("updateDetails")
UpdateDetails details;
}
В JSON я хотел бы сериализовать / десериализовать что-то вроде:
{
"updateDetails": {...}
}
Итак, мне нужно определить тип поля подробностей по его имени в Json и создать экземпляр соответствующего потомка класса Event при десериализации.
Я добился этого, создав собственный десериализатор, который проверяет точное имя объекта сведений, но мне не нравится это решение (сериализация работает из коробки из-за аннотации JsonProperty). У Джексона есть решение для этого? Я не смог добиться этого с помощью стандартных аннотаций JsonTypeInfo (он всегда вложил бы объект детали на один уровень ниже в JSON или добавил бы новый атрибут, чего, к сожалению, я не могу сделать).