首页 > 解决方案 > Jackson XML 序列化不包装子元素并使用子元素名称

问题描述

我想在序列化如下所示的类结构时生成以下 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并让它使用在列表中放置的类上的命名注释?

标签: jackson

解决方案


推荐阅读