如何用Node.js的json2csv库为所有数据类型内容添加双引号
解决json2csv所有字段强制添加双引号的问题
要实现所有数据类型(数字、布尔值、null等)都被双引号包裹,只需在json2csv的配置中启用alwaysQuote,并配合自定义转换处理非字符串类型的格式化:
修改后的代码
import { Parser } from 'json2csv'; import fs from 'fs'; function generateCSV(jsonData: any[], fileName: string): void { const opts = { defaultValue: "", quotes: '"', alwaysQuote: true, // 强制所有字段添加双引号 transforms: [ { transform: (value) => { // 将null转为空字符串,其他非字符串类型转为字符串 if (value === null) return ""; if (typeof value !== 'string') return String(value); return value; } } ] }; const parser = new Parser(opts); const csvData = parser.parse(jsonData); console.log(csvData); fs.writeFile(fileName, csvData, (err) => { if (err) { console.error("Error saving CSV:", err); } else { console.log("CSV saved successfully."); parentPort?.postMessage("success"); } }); }
关键配置说明
alwaysQuote: true:强制json2csv对所有字段(包括数字、布尔值等)添加双引号,不再仅针对字符串类型- 自定义transform函数:
- 将
null转换为空字符串,匹配你期望的输出格式 - 把数字、布尔值等非字符串类型转为字符串,确保它们被双引号包裹后是正确的文本格式
- 将
输出验证
使用你提供的输入数据,修改后的代码会生成符合要求的CSV:
"name","age","department","contact","phone","email" "Alice","28","HR","hell","123-456-7890","alice@example.com" "Bob","32","Engineering","false","987-654-3210","bob@example.com" "Charlie","","Marketing","","9876543210",""
内容的提问来源于stack exchange,提问作者Donib
相关产品推荐
相关产品推荐

