JSON转CSV时如何强制所有值包裹双引号?含npm包实现方案
解决方案
方案1:继续使用json-2-csv包(无需更换依赖)
你当前使用的包本身支持强制所有字段用双引号包裹,只需要在options中新增wrapAllFields: true配置项即可。该参数默认值为false,所以默认只会在字段包含分隔符等特殊字符时才添加包裹。
修改后的代码如下:
const converter = require('json-2-csv'); async function convertToCSV(jsonData) { try { let options = { delimiter: { wrap : '"', field : ',', eol : '\n' }, wrapAllFields: true // 新增该行配置即可 }; const csvData = await converter.json2csvAsync(jsonData, options); console.log("Convert Data --- completed"); return csvData; } catch (err) { console.error("ERROR in converting data " + err.message); } }
运行后即可得到所有字段都被双引号包裹的预期输出:"Nissan","Murano","2013","7,106"
方案2:其他可选npm包实现
如果需要换用其他包实现需求,以下两个常用包都支持强制全字段包裹:
1. csv-writer
安装后配置alwaysQuote: true即可实现全包裹,示例代码:
const createCsvWriter = require('csv-writer').createObjectCsvWriter; async function convertToCSV(jsonData) { const csvWriter = createCsvWriter({ path: 'output.csv', header: [ {id: 'Make', title: 'Make'}, {id: 'Model', title: 'Model'}, {id: 'Year', title: 'Year'}, {id: 'Mileage', title: 'Mileage'} ], alwaysQuote: true }); await csvWriter.writeRecords(jsonData); }
2. papaparse
转换时配置quotes: true即可,示例代码:
const Papa = require('papaparse'); function convertToCSV(jsonData) { return Papa.unparse(jsonData, { quotes: true // 所有字段都添加双引号 }); }
内容的提问来源于stack exchange,提问作者Andrei Khotko
相关产品推荐
相关产品推荐

