Node.js中如何将特定JSON格式转换为分号分隔CSV文件
解决方法:转置数据结构生成目标CSV
你的问题在于原代码直接按原数组的行结构输出,但目标CSV需要转置原数据的行列——把原数据中的日期列转为行,原数据的行转为列。
具体实现代码
const data = [ { "Month": "V", "6/2022": "2", "7/2022": "4", }, { "Month": "L", "6/2022": "6", "7/2022": "8", }, ]; // 提取所有日期键(排除"Month"字段) const dateKeys = Object.keys(data[0]).filter(key => key !== "Month"); // 构建新表头:["Month", "V", "L"] const newHeaders = ["Month", ...data.map(item => item.Month)]; // 构建日期行:每个日期对应各Month的值 const dateRows = dateKeys.map(date => { return [date, ...data.map(item => item[date])]; }); // 生成CSV内容 const csvContent = [newHeaders, ...dateRows].map(row => row.join(';')).join('\n'); console.log(csvContent);
代码说明
- 提取日期键:从第一个数据对象中筛选出除"Month"外的所有键(即
6/2022、7/2022) - 构建新表头:以"Month"开头,接着是原数据中每个对象的
Month字段值(V、L) - 生成日期行:遍历每个日期键,收集所有数据对象中该日期对应的值,组成一行
- 拼接CSV:将表头和日期行用分号和换行符拼接成最终的CSV字符串
执行后输出的结果就是你需要的格式:
Month;V;L 6/2022;2;6 7/2022;4;8
内容的提问来源于stack exchange,提问作者user1862965
相关产品推荐
相关产品推荐

