Определить тип поля по его имени в Джексоне - PullRequest
1 голос
/ 06 ноября 2019

У меня есть интерфейс, который принимает события в своем API. Базовое событие выглядит так:

class Event<T extends Details> {
    T details;
}

Пример реализации выглядит следующим образом:

class UpdateEvent extends Event<UpdateDetails> {

    @JsonProperty("updateDetails")
    UpdateDetails details;

}

В JSON я хотел бы сериализовать / десериализовать что-то вроде:

{
    "updateDetails": {...}
}

Итак, мне нужно определить тип поля подробностей по его имени в Json и создать экземпляр соответствующего потомка класса Event при десериализации.

Я добился этого, создав собственный десериализатор, который проверяет точное имя объекта сведений, но мне не нравится это решение (сериализация работает из коробки из-за аннотации JsonProperty). У Джексона есть решение для этого? Я не смог добиться этого с помощью стандартных аннотаций JsonTypeInfo (он всегда вложил бы объект детали на один уровень ниже в JSON или добавил бы новый атрибут, чего, к сожалению, я не могу сделать).

...