代码之家  ›  专栏  ›  技术社区  ›  ab11

如何用Jackson序列化一个没有列表名的列表?

  •  1
  • ab11  · 技术社区  · 7 年前

    我使用的代码是:

    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;
    }
    

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

    我希望它序列化时不使用“items”元素:

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

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

    2 回复  |  直到 7 年前
        1
  •  1
  •   DwB    7 年前

    这只是@Andreas答案的一个微小变化。

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

    @JacksonXmlElementWrapper 注释来标识它是一个内容列表 你不需要包装器元素。 使用 @JacksonXmlProperty

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

        2
  •  0
  •   Andreas dfa    7 年前

    @JacksonXmlElementWrapper

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