Как десериализовать XML с помощью вложенных списков? - PullRequest
0 голосов
/ 04 июля 2018

Как я могу прочитать ответ xml, содержащий вложенные списки? Следующее не работает, означает, что вложенный список всегда пуст. Почему?

    JacksonXmlModule xmlMod = new JacksonXmlModule();
    xmlMod.setDefaultUseWrapper(false);

    ObjectMapper m = (new Jackson2ObjectMapperBuilder())
            .createXmlMapper(true)
            .modules(xmlMod, new JaxbAnnotationModule())
            .build();


    PersonResponse rsp = m.readValue(ReaderUtil.read("person.xml"), PersonResponse.class)

//all fields having getter + setter, omitted for readability
@XmlRootElement
public class PersonResponse {
    @XmlElement(required = true)
    private Persons persons;

    @XmlAccessorType(XmlAccessType.FIELD)
    public static class Persons {
        @XmlElement(required = true)
        List<Person> person;

        @XmlAccessorType(XmlAccessType.FIELD)
        public static class Person {
            @XmlAttribute(name="firstname", required=true)
            private String firstname;
        }
    }
}

person.xml:

<response>
    <persons>
        <person firstname="test" />
        <person firstname="john" />
    </persons>
</response>

Результат: список person внутри объекта ответа всегда пуст. Почему?

...