Неправильный размер списка в списке десериализации в xml - PullRequest
0 голосов
/ 10 января 2020
<?xml version="1.0" encoding="UTF-8"?>
<renditions type="array">
    <rendition>
        <id>1</id>
    </rendition>
    <rendition>
        <id>2</id>
    </rendition>
</renditions>

это. мой отображенный класс Rendition:

@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName = "rendition")
public class Rendition {

    @JacksonXmlProperty
    private String id;

    // Getter and setter
}

Для десериализации моего xml я делаю это:

JacksonXmlModule module = new JacksonXmlModule();
module.setDefaultUseWrapper(false);
XmlMapper mapper = new XmlMapper(module);

List<Rendition> renditions = mapper.readValue(inputStream,
                TypeFactory.defaultInstance().constructCollectionType(List.class, Rendition.class));

renditions.stream().map(ReflectionToStringBuilder::toString).forEach(System.out::println);

И я не понимаю, почему я получаю 3 предмета вместо 2:

Output:
Rendition@38093ffe[id=<null>]
Rendition@4713b631[id=1]
Rendition@7a0d2c80[id=2]

Итак, я хочу знать, почему я получаю нулевой элемент в первую очередь, потому что два других элемента хороши.

Я использовал версию Jackson 2.10.1.

После многих тестов, если я удалю attribut type = "array", он работает. Но жизнь нелегка, и xml, который я десериализирую, предоставляется внешней службой.

Возможно ли решить мои проблемы без замены String или создания класса Renditions (в котором есть только список представлений)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...