如何在Node.js中重组JSON数组为指定层级结构?
解决方案:重组JSON结构并转换为XML
核心思路
先把数组形式的JSON包装成包含root节点的结构,再通过XML转换工具生成目标格式。以下是具体实现步骤:
1. 重组JSON结构
假设你的原始JSON数组为originalJsonArray,直接将其嵌套到root节点下的item数组中即可:
// 示例原始JSON数组 const originalJsonArray = [ { id: 1, name: "商品A", price: 99 }, { id: 2, name: "商品B", price: 199 } ]; // 重组为符合XML需求的结构 const restructuredJson = { root: { item: originalJsonArray } };
这个结构会被XML工具解析为标准层级:
1 商品A 99 2 商品B 199
2. 整合完整流程(下载→CSV→JSON→重组→XML)
用常用Node.js库实现全流程,先安装依赖:
npm install axios csv-parser json2xml
完整代码示例:
const axios = require('axios'); const csv = require('csv-parser'); const fs = require('fs'); const json2xml = require('json2xml'); async function processTxtToXml() { try { // 下载目标txt文件(假设文件内容为CSV格式) const stream = await axios.get('https://你的文件地址/target.txt', { responseType: 'stream' }); // 解析CSV为JSON数组 const jsonArray = []; stream.data .pipe(csv({ separator: ',' })) // 根据实际分隔符调整,比如'\t'对应制表符分隔 .on('data', (row) => jsonArray.push(row)) .on('end', () => { // 重组JSON结构 const structuredData = { root: { item: jsonArray } }; // 转换为XML,自动添加XML声明头 const xmlContent = json2xml(structuredData, { header: true }); // 保存最终XML文件 fs.writeFileSync('output.xml', xmlContent); console.log('XML转换完成,文件已保存'); }); } catch (err) { console.error('流程执行失败:', err.message); } } // 启动处理流程 processTxtToXml();
注意事项
- 如果txt文件不是标准CSV格式,需调整
csv-parser的配置参数(如separator、quote),保证解析出正确的JSON数组 - 若使用其他XML转换库(如
xml2js),只需替换转换逻辑,重组后的JSON结构完全通用 - 若原始数组元素是字符串、数字这类基本类型,转换后的XML会自动生成
<item>具体值</item>的节点形式
内容的提问来源于stack exchange,提问作者Moises Pachon
相关产品推荐
相关产品推荐

