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

如何修改Jackson XML注解将List<Element>替换为自定义Elements类?

解决方案

一、将Group类中的List替换为自定义Elements类

1. 调整Elements类的Jackson注解

OBIP生成的XML里,<group>下直接是多个<element>节点,没有外层的<elements>包裹。因此需要给Elements类的内部List添加注解,让Jackson直接把<element>节点映射到列表中,同时禁用外层包装:

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Elements {
    // 禁用外层包装,直接映射<element>节点到List
    @JacksonXmlProperty(localName = "element")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<Element> elements = new ArrayList<>();
}

2. 修改Group类的字段与注解

将Group类中原有的List<Element> elements替换为Elements elements,无需额外添加wrapper注解(Elements类已处理内部List的映射逻辑):

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Group {
    // 直接映射到Elements对象,无需wrapper
    @JacksonXmlProperty(localName = "elements")
    private Elements elements;

    // 保留Group原有的其他字段...
}

配置完成后,Jackson会自动把<group>下的所有<element>节点解析到Elements类的elements列表中,序列化时也能生成符合要求的XML结构。

二、将DataModel类中的List替换为自定义Groups类

1. 定义Groups类并添加注解

同理,XML里<dataModel>下直接是多个<group>节点,Groups类的内部List需要禁用外层包装:

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Groups {
    @JacksonXmlProperty(localName = "group")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<Group> group = new ArrayList<>();
}

2. 修改DataModel类的字段与注解

把原来的List<Group> group替换为Groups groups,并调整对应注解:

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JacksonXmlRootElement(localName = "dataModel")
public class DataModel {
    @JacksonXmlProperty(localName = "groups")
    private Groups groups;

    // 保留DataModel原有的其他字段...
}

关键注解说明

  • @JacksonXmlElementWrapper(useWrapping = false):禁用Jackson自动生成的集合外层包装标签,直接将子节点映射到集合中,匹配OBIP生成的无外层包裹的XML结构。
  • @JacksonXmlProperty(localName = "xxx"):指定Java字段对应的XML节点名称,确保和OBIP输出的XML标签名完全一致。
  • @JsonInclude(JsonInclude.Include.NON_NULL):避免序列化时输出null值的字段,保持XML结构简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:06:18