使用PapaParse将JSON转CSV时如何实现行表头输出?
解决方案
PapaParse 原生的 unparse 方法没有专门针对行维度表头的配置项,默认开启header: true只会输出列维度的顶部表头,和你需要的效果方向相反,你可以通过提前预处理数据的方式实现需求,步骤如下:
- 先将你的原始数据调整为嵌套数组格式,将每行的行表头作为数组的第一个元素插入,同时把你需要的顶部表头(a、b、c、d)作为数组的第一个元素
示例预处理逻辑参考:
// 可根据你的实际原始数据结构调整逻辑 const rawData = [ {value1: 'answer 1_0', value2: 'answer 1_1', value3: 'answer 1_2'}, {value1: 'answer 2_0', value2: 'answer 2_1', value3: 'answer 2_2'} ] // 自定义行表头列表,对应你要的Heading 1、Heading 2 const rowHeaders = ['Heading 1', 'Heading 2'] // 自定义顶部表头 const topHeader = ['a', 'b', 'c', 'd'] // 拼接为最终要传入的数组 const processedData = [topHeader, ...rawData.map((item, index) => { return [rowHeaders[index], item.value1, item.value2, item.value3] })]
- 修改PapaParse的配置,关闭header,删除columns配置项,直接传入处理好的数组即可
修改后的代码:
let csv = Papa.unparse(processedData,{ quotes: false, quoteChar: '"', escapeChar: '"', delimiter: ",", header: false, newline: "\r\n", skipEmptyLines: false }); console.log(csv);
调整后输出的CSV格式就和你期望的行表头效果一致。
内容的提问来源于stack exchange,提问作者Bhargav Kanodiya
相关产品推荐
相关产品推荐

