5 分钟学会 JSON 转 CSV,轻松用 Excel 打开接口数据
2024-05-10
产品、运营常需要把接口 JSON 放进 Excel 做透视或分享。CSV 是最通用的桥梁——本质是「一行一条记录、逗号分列」。本文用最常见的「对象数组」场景说明转换步骤。
什么样的 JSON 最适合转 CSV?
理想输入:顶层 JSON 数组,每个元素是字段相同的对象,例如用户列表、订单列表。
嵌套对象或数组需要「扁平化」:如 address.city 变成一列,tags 可合并为逗号分隔字符串或拆成多列。
[
{ "id": 1, "name": "Alice", "city": "Shanghai" },
{ "id": 2, "name": "Bob", "city": "Beijing" }
]手动转换四步(理解原理)
1. 确定表头:收集所有对象的键名(建议固定顺序)。
2. 写第一行:id,name,city
3. 逐行写数据:每个对象对应 CSV 一行,字段用英文逗号分隔。
4. 含逗号、换行或双引号的字段,用双引号包裹,内部双引号写成两个 ""
id,name,city
1,Alice,Shanghai
2,Bob,Beijing用 JavaScript 快速生成 CSV
浏览器或 Node 均可:先 JSON.parse,再 map 每行,最后用 Blob 下载。
注意 RFC 4180:字段含逗号时必须加引号;Excel 打开 UTF-8 CSV 可能需要「数据 → 自文本」并选 UTF-8。
const rows = JSON.parse(jsonText);
const headers = ["id", "name", "city"];
const escape = (v) => {
const s = String(v ?? "");
return /[",\n]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s;
};
const csv = [
headers.join(","),
...rows.map((r) => headers.map((h) => escape(r[h])).join(",")),
].join("\n");嵌套 JSON 怎么处理?
orders[].items[] 这类一对多关系,通常导出两张 CSV(订单表 + 明细表),或用 orderId 关联。
不要把深层嵌套硬塞进一行——Excel 里无法直接还原结构,也不利于筛选。
Excel 打开乱码?
CSV 本身无强制编码;Windows 版 Excel 双击打开 UTF-8 文件可能乱码。
办法:Excel 导入向导选 UTF-8;或保存为 UTF-8 BOM;或改用 .xlsx 导出库(如 SheetJS)。
推荐工作流
1. 在线工具校验并格式化 JSON 数组。
2. 确认每条记录键一致,处理 null 与缺失字段。
3. 脚本或表格工具生成 CSV,Excel 导入验证。
4. 定期任务可固定表头映射,写入 CI 或后台导出接口。