jackson fasterxml具有相同名称的多个元素

时间:2016-02-02 14:07:15

标签: java xml xsd jackson

我需要生成确认到此XSD的XML:

<xsd:element name="Line" type="Line" minOccurs="0" maxOccurs="3"/>

这样输出就像:

<root>
    <Line>A</Line>
    <Line>B</Line>
    <Line>C</Line>
</root>

问题在于,如果我在Java bean中注释变量,如:

@JsonProperty("Line")
private String Line1;

@JsonProperty("Line")
private String Line2;

@JsonProperty("Line")
private String Line3;

然后我得到一个例外,如果我使用List那么输出就出错了,例如:

   <root>
       <Line>
           <Line>1 New Orchard Road</Line>
           <Line>Armonk</Line>
       </Line>
   </root>

父元素<Line>元素过多。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

你需要的只是正确的杰克逊注释:

public class ListTest
{
    @JacksonXmlElementWrapper(useWrapping = false)
    public List<String> line = new ArrayList<>();
}

测试:

public static void main(String[] args)
{
    JacksonXmlModule module = new JacksonXmlModule();
    XmlMapper mapper = new XmlMapper(module);
    ListTest lt = new ListTest();
    lt.line.add("A");
    lt.line.add("B");
    lt.line.add("C");
    try {
        mapper.writeValue(System.out, lt);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

输出:

<ListTest><line>A</line><line>B</line><line>C</line></ListTest>