使用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
相关产品推荐
相关产品推荐

