You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jackson XML解析:如何处理两个包装器含同名子元素的问题?

解决Jackson XML解析中多列表共用同名字段的冲突问题

问题分析

你遇到的报错是因为Jackson将两个字段的@JacksonXmlProperty(localName = "action")识别为同一个属性,导致setter方法定义冲突。而省略该注解时,Jackson会默认用Java字段名作为XML子元素名,生成的结构不符合Jira导出的XML格式要求。

解决方案

通过给每个@JacksonXmlProperty指定唯一的propertyName参数,让Jackson内部区分两个属性,同时保持XML子元素名为action:

修改后的Workflow类

@JacksonXmlRootElement(localName = "workflow")
public class Workflow implements XMLDocumentHeader {

    @JacksonXmlElementWrapper(localName = "initial-actions")
    @JacksonXmlProperty(localName = "action", propertyName = "initialAction")
    private List<Action> initialActions = new ArrayList<>();

    @JacksonXmlElementWrapper(localName = "global-actions")
    @JacksonXmlProperty(localName = "action", propertyName = "globalAction")
    private List<Action> globalActions = new ArrayList<>();

    // 此处添加getter、setter方法,或使用Lombok的@Data注解自动生成
}

补充说明

  • propertyName仅用于Jackson内部识别属性,不会影响XML的序列化/解析结果,最终生成的XML依然会以<action>作为子元素,分别包裹在<initial-actions>和<global-actions>容器中。
  • Action类无需添加@JacksonXmlRootElement注解(该注解仅适用于XML根元素),若需自定义Action的XML结构,直接在Action类的字段上使用@JacksonXmlProperty注解即可。

内容的提问来源于stack exchange,提问作者KC Wong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:25:02