如何在没有列表名称的情况下使用Jackson序列化列表?

时间:2018-11-02 17:46:06

标签: java jackson

我正在使用以下代码:

XmlMapper objectMapper = new XmlMapper();
    objectMapper.configure( ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true );
    objectMapper.enable(SerializationFeature.INDENT_OUTPUT);

    String xml = objectMapper.writeValueAsString(report);

要序列化此类:

class Report {

   List<Item> items;
}

项目列表位于名为“ items”的元素中:

<Report>
<items>
<item>
</item>
<item>
...

我希望它在没有“ items”元素的情况下进行序列化:

<Report>
<item>
</item>
<item>
...

有什么建议可以和杰克逊一起做吗?

2 个答案:

答案 0 :(得分:1)

这只是@Andreas答案的细微变化。

@JacksonXmlElementWrapper(localName = "ignoredName", useWrapping = false)
@JacksonXmlProperty(localName = "item")
private List<Item> itemList;

使用@JacksonXmlElementWrapper批注来标识它是东西列表 而且您不需要包装元素。 使用@JacksonXmlProperty批注来标识元素名称。

这将导致输出中重复<item>个xml元素; itemList变量中的每个条目一个。

答案 1 :(得分:0)

添加@JacksonXmlElementWrapper批注,指定您不希望使用包装器:

@JacksonXmlElementWrapper(useWrapping = false)
List<Item> items;