XML-сериализация Jackson не оборачивает дочерние элементы и использует имена дочерних элементов - PullRequest
0 голосов
/ 04 сентября 2018

Я хочу создать следующий XML при сериализации структуры классов, показанной ниже:

<C>
  <D A="FrontRight"/>
  <W A="Green"/>
</C>

Код Java выглядит следующим образом:

@JacksonXmlRootElement(localName = "C")
public static class Car {
    public Car(List children) {
        this.children = children;
    }

    @JacksonXmlElementWrapper(useWrapping = false)
    public List children;
}

@JacksonXmlRootElement(localName = "D")
public static class Door {

    @JacksonXmlProperty(localName = "A", isAttribute = true)
    public String placement = "FrontRight";
}

@JacksonXmlRootElement(localName = "W")
public static class Window {
    @JacksonXmlProperty(localName = "A", isAttribute = true)
    public String color = "Green";
}


    @JacksonXmlElementWrapper(useWrapping = false)
    public List children;
}

И вызывает маппер как:

    ObjectMapper mapper = new XmlMapper();
    mapper.enable(SerializationFeature.INDENT_OUTPUT);

    System.out.println(mapper.writeValueAsString(new Car(Arrays.asList(new Door(), new Window()))));

Производит этот вывод:

<C>
  <children A="FrontRight"/>
  <children A="Green"/>
</C>

Что я должен сделать, чтобы избавиться от children и заставить его использовать именованные, аннотированные для классов, помещенных в список?

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