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

使用fast-xml-parser将JSON转XML时生成嵌套子节点的问题

解决方案

方法一:调整JSON结构(推荐)

将原JSON中Attributes数组的结构修改为对象包裹数组的形式,让Attribute作为数组键,fast-xml-parser会自动生成单个<Attributes>节点,并包含多个<Attribute>子节点:

修改后的JSON:

{
    "ExternalId": "1234-01",
    "Name": "product name",
    "Attributes": {
        "Attribute": ["attr-value-1", "attr-value-2"]
    }
}

转换后即可得到你预期的XML格式。

方法二:使用XMLBuilder的transform钩子(无需修改原JSON)

如果无法调整原JSON结构,可以通过fast-xml-parser的transform配置钩子,在XML生成前动态修改数据结构:

const { XMLBuilder } = require('fast-xml-parser');

const jsonData = {
    "ExternalId": "1234-01",
    "Name": "product name",
    "Attributes": [
        { "Attribute": "attr-value-1" },
        { "Attribute": "attr-value-2" }
    ]
};

const builder = new XMLBuilder({
    transform: (key, value) => {
        // 针对Attributes数组做转换
        if (key === 'Attributes' && Array.isArray(value)) {
            return { Attribute: value.map(item => item.Attribute) };
        }
        return value;
    }
});

const xmlContent = builder.build(jsonData);
console.log(xmlContent);

这段代码会把原Attributes数组转换成包含Attribute数组的对象,最终生成符合预期的XML结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 11:38:32