Сериализация Jackson XML ArrayList

У меня проблема с сериализацией. У меня есть XML:

<ds:Transforms>
   <ds:Transform Algorithm = "http://www.w3.org/2000/09/xmldsig#enveloped"/>
   <ds:Transform Algorithm = "http://www.w3.org/TR/2001/REC"/>
</ds:Transforms>

Преобразование тега пусто, но имеет атрибут.

Поджо трансформирует:

@Data
public class Transforms {
    @JacksonXmlProperty(localName = "Transform")
    @JacksonXmlElementWrapper
    private List<Transform> transform;
}

Преобразование Поджо:

@Data
public class Transform {
    @JacksonXmlProperty(isAttribute = true, localName = "Algorithm")
    private String algorithm;
}

Когда я сериализую данный XML, входящий результат:

Transforms(transform=[])

Как я могу получить список из двух преобразований с алгоритмом поля?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто отключите атрибут useWrapping в @JacksonXmlElementWrapper, поместив false в класс Transforms. Это сработает.

Обновленный код:

@Data
public class Transforms {
    @JacksonXmlProperty(localName = "Transform")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<Transform> transform;
}

Вывод на моем локальном компьютере:

Transforms(transform=[Transform[algorithm='http://www.w3.org/2000/09/xmldsig#enveloped'], Transform[algorithm='http://www.w3.org/TR/2001/REC']])

Спасибо! Я попробовал ``` @JacksonXmlElementWrapper(useWrapping = false, localname = "Transform") ``` И это не сработало, но ваш код работает!

FPS Bard 14.08.2024 09:19

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