<?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 (в котором есть только список представлений)?