javascript将json转csv需先定义字段顺序并生成表头,再逐行取值、安全转义(含引号/逗号/换行的字符串需双引号包裹且内部引号加倍),最后拼接下载。

JavaScript 中把 JSON 数据转成 CSV,核心是把数组对象按字段拼成逗号分隔的字符串,注意处理引号、换行、逗号等特殊字符。
提取字段名并生成 CSV 头部
先从 JSON 数组中取一个对象,用 Object.keys() 获取字段名,再用 join(",") 拼成表头行。如果数据字段不统一,建议手动指定字段顺序,避免列错位。
- 推荐显式定义字段列表,例如:
const headers = ["name", "age", "email"]; - 用
headers.map(escapeCSV)对每个字段做安全转义,再 join - 字段含逗号、换行或双引号时,必须用双引号包裹,并将内部双引号变成两个双引号(CSV 标准)
逐行转换每条 JSON 记录
对数组中每个对象,按 headers 顺序取值,再对每个值调用转义函数,最后用逗号连接成一行。
使用 qbo-mileage CLI 及用户凭证,从 Airtable、Outlook 或 Google Calendar 记录生成 QuickBooks Online 里程 CSV 文件。
- 空值、
null、undefined建议转为空字符串,避免写入null字面量 - 数字、布尔值直接转字符串即可;日期建议先格式化为 ISO 或自定义字符串
- 嵌套对象或数组需提前扁平化或转为 JSON 字符串(如
JSON.stringify(value)),再转义
安全转义 CSV 单元格内容
这是最容易出错的环节。只要值里有 "、,、\n、\r 中任意一个,就必须用双引号包裹,且内部双引号要替换成两个双引号。
错误写法:"Alice, age 25" → 会被当两列
正确写法:""Alice, age 25"" → 先加外层双引号,再转义内部引号
- 转义函数示例:
function escapeCSV(str) { return typeof str === "string" ? `"${str.replace(/"/g, '""')}"` : String(str); } - 非字符串类型先转字符串再处理,避免
toString()引发意外(如数组会变成逗号连接)
生成并下载 CSV 文件
拼好全部行(表头 + 数据行)后,用换行符 \n 连接,构造完整 CSV 字符串,再通过 Blob 和 a 标签触发下载。
- MIME 类型用
"text/csv;charset=utf-8",确保中文不乱码 - 注意 IE 不支持
URL.createObjectURL,如需兼容可改用data:text/csvURI(但有长度限制) - 文件名建议带
.csv后缀,如data.csv
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










