JS/TS通用深层嵌套JSON转CSV函数实现问题求助
解决深层嵌套JSON转CSV时展开数组的问题
我懂你遇到的麻烦了——你希望把JSON里的数组字段拆分成单独的行,让每个数组元素都和对应的app值配对,但默认的json2csv配置只会把整个数组当成一个单元格内容输出。别担心,用json2csv的unwind选项就能轻松解决这个问题!
问题原因
你当前的代码只是指定了要导出的字段,但没有告诉json2csv需要展开device这个数组字段,所以它会把数组直接序列化为字符串放进CSV单元格里。
修改后的代码
我们只需要在配置里添加unwind选项指定要展开的数组字段,同时设置分隔符为你需要的分号;:
private ConvertToCSV(json: string, fields: string[]): string { const Json2csvParser = require("json2csv").Parser; // 添加unwind和delimiter配置 const options = { fields, unwind: "device", // 指定要展开的数组字段 delimiter: ";" // 设置CSV的分隔符为分号 }; const parser = new Json2csvParser(options); const parsedJson = JSON.parse(json); const csv = parser.parse(parsedJson); console.log(parsedJson); console.log(csv); return csv; }
效果验证
当你传入你提供的JSON输入时,这段代码会输出你预期的结果:
app;device app1;c1 app1;c2 app1;c3 app1;c4 app2;b1 app2;b2
扩展说明
如果你的JSON里有多个需要展开的数组字段,可以把unwind设置为数组形式,比如:
unwind: ["device", "anotherArrayField"]
这样就能同时展开多个数组字段,生成对应的多行内容啦。
内容的提问来源于stack exchange,提问作者Nicola Munz
相关产品推荐
相关产品推荐

