Джексон: Как десериализовать список в значение поля - PullRequest
0 голосов
/ 27 мая 2020

Я использую Jackson как инструмент для десериализации ввода JSON в Java POJO. Однако мне нужно десериализовать значение списка в поле класса-оболочки. Вот пример кода:

class Hello {
    private ListWrapper list;
}

class ListWrapper {
    private List<Item> unnamed;
}

class Item {
    // some fields
}

Если пользовательский ввод выглядит следующим образом, я хотел бы, чтобы он был десериализован в экземпляр Hello с полем «список», содержащим экземпляр ListWrapper, чье «безымянное» поле содержит items.

{
    "list": [
        {
            // item1
        }
        {
            // item2
        }
    ]
}

Обратите внимание, что я не хочу настраивать десериализатор, который используется @JsonDeserialize, потому что я хочу, чтобы Джексон выполнил для меня проверку сопоставления Item.

Is Возможно? И как?

Спасибо.

1 Ответ

1 голос
/ 02 июня 2020

Вы можете выполнить sh это, используя следующие аннотации Джексона:

class Hello {
    @JsonUnwrapped
    private ListWrapper list;
}

class ListWrapper {
    @JsonProperty("list")
    private List<Item> unnamed;
}
...