Jackson XML Mapper为列表编写两次元素名称

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jackson XML Mapper为列表编写两次元素名称相关的知识,希望对你有一定的参考价值。

我有一个类Submission(如下所示),它有一个名为Return of return类型的列表。当我反对序列化Return元素两次。返回元素有没有办法只出现一次?

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ReturnType", propOrder = {
    "t619",
    "_return"
})
@XmlRootElement(name = "Submission")
public class Submission {

    @XmlElement(name = "Return", required = true)
    protected List<Return> _return;
}


@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ReturnChoiceType", propOrder = {
    "t4",
    "t4A",
    ...
})
public class Return {

    @XmlElement(name = "T4")
    protected T4ReturnType t4;

    ...
}

生成的XML

<Return> <!-- One return -->
    <Return> <!-- Another return -->
      <T4>
      </T4>
    </Return>
</Return>
答案

因为,Return元素包含ListReturn对象。

@XmlElement(name = "Return", required = true)
    protected List<Return> _return;

你需要将List<Return>改为List<String>

 protected List<String> _return;

由于你没有分享Return类的完整细节,但我假设你可能还需要改变一些东西。

以上是关于Jackson XML Mapper为列表编写两次元素名称的主要内容,如果未能解决你的问题,请参考以下文章

Jackson 序列化:将字段值设置为 XML 元素名称

Jackson:为 Map 数据结构注册自定义 XML 序列化程序

Jackson xml反序列化 - 序列化为一个列表,其中包含任意元素

解析xml的工具类 -----jackson

Mapper 编写有哪几种方式?

Jackson XML :: 在没有打开的开始元素时尝试编写属性