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

使用Java XmlMapper生成指定重复父标签XML的JSON结构咨询

使用Jackson XmlMapper生成指定XML结构的正确JSON写法

要生成你需要的<Months>包含多个<Month>标签的XML结构,你之前的JSON数组写法无法满足需求——因为XmlMapper默认会将数组元素的标签名设置为父节点的名称,最终生成<Months>嵌套<Months>的结构。以下是两种可行的解决方式:

方式一:调整JSON结构(无需额外配置)

直接在Months对象内定义名为Month的数组,XmlMapper会自动将数组元素映射为<Month>标签:

{
  "Months": {
    "Month": ["May", "August", "November", "February"]
  }
}

方式二:保留原有JSON结构,通过配置或注解实现

如果你想继续使用原来的JSON结构({"Months": ["May", ...]}),可以通过XmlMapper配置或Java类注解指定数组元素的标签名:

1. 直接配置XmlMapper

XmlMapper xmlMapper = new XmlMapper();
// 关闭XML声明(可选,按需调整)
xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, false);
// 禁用默认包装器,通过Mixin指定数组元素标签
xmlMapper.setDefaultUseWrapper(false);
xmlMapper.addMixInAnnotations(List.class, MonthListMixin.class);

// 定义Mixin类指定标签名
abstract class MonthListMixin {
    @JacksonXmlProperty(localName = "Month")
    public List<String> elements;
}

2. 用Java实体类配合注解

定义对应实体类,通过注解明确标签规则:

public class MonthsWrapper {
    @JacksonXmlProperty(localName = "Month")
    @JacksonXmlElementWrapper(localName = "Months")
    private List<String> months;

    // 省略getter、setter方法
}

此时你原来的JSON结构可直接反序列化该类,再序列化就能得到目标XML。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 07:06:17