JSON 转 CSV — 将 JSON 数组转换为 CSV 表格
将 JSON 对象数组转换为 CSV 格式。支持嵌套扁平化、分号分隔符、BOM 前缀 —— 全部在浏览器中完成,无需上传。
JSON 是 Web API 的原生格式,而 CSV 是那些「从未被设计来彼此对话」的系统之间数据交换的最大公约数。每条分析管道、每个电子表格、每个数据库导入向导都期望 CSV,而每个现代 Web 服务默认返回 JSON。在两者之间相互转换几乎是每次数据迁移的第一步,但这种转换的细微之处常常被低估 —— 因为这两种格式对结构做出了根本不同的假设。JSON 是树形的:嵌套、递归、深度任意。CSV 是表形的:扁平、整齐、每一行都有同样的列。本转换器通过选择一种扁平化策略 —— 用点号记法实现深度访问,或仅取顶层以便快速导出 —— 并显式呈现那些大多数工具默默搞错的编码细节,从而在两种格式之间搭起桥梁。
实践中最重要的三个编码细节:UTF-8 字节顺序标记(文件开头的三个不可见字节,告诉 Excel 这是 UTF-8)、英语世界(逗号)和欧洲世界(分号,因为在那里逗号是小数点)之间分隔符的不一致,以及防止含有分隔符字符的值在字段中间被劈开的引号协议。这三项在输出选项中都可配置,默认值的选择目标是让导出文件在「Windows 上以逗号作小数分隔符的 Excel」这一最常见的目标中正确打开。
转换之后,最常见的下一步是把 CSV 导入数据库或可视化工具。如果目标是 SQL,配套的 CSV-to-INSERT 转换器可以直接生成 SQL 语句。如果目标是 TypeScript 或 Python 应用,JSON-to-TypeScript 或 JSON-to-Python 转换器就是正确的下一步 —— 它们从同一个 JSON schema 生成类型化的数据模型,让 API 响应和 CSV 导出共享单一的事实来源。
使用方法
粘贴或拖入 JSON
拖入一个 JSON 对象数组,或粘贴一段 JSON 字符串。解析器期望顶层为数组 —— 单独的对象也可接受,但会输出为单行 CSV。
选择分隔符与编码
在逗号(RFC 4180 标准)、分号(欧洲版 Excel 默认)或制表符之间切换。启用 UTF-8 BOM 可让 Excel 在打开时自动检测编码。
下载 CSV
结果是可下载的 .csv 文件。除了浏览器内存之外没有大小限制 —— 包含数千个对象的数组在不到一秒内即可处理完成。
常见问题
如何处理嵌套的 JSON 对象?
默认情况下,嵌套对象会用点号记法的列名扁平化:`user.profile.name` 会变成名为 `user.profile.name` 的 CSV 列。当不需要嵌套数据时,切换「扁平 vs 嵌套」开关可折叠为仅保留顶层键。
Excel 能正确打开生成的 CSV 吗?
可以,前提是启用了 UTF-8 BOM。Windows 版 Excel 在检测到 BOM 时会自动识别 UTF-8,从而正确渲染带音调的字符、emoji 和非拉丁文字。没有 BOM 时,Excel 可能会回退到系统的 ANSI 代码页,把非 ASCII 文本弄得一团糟。
不同的数据类型会怎样处理?
所有值都会被输出为字符串。JSON 的 `true` 会变成 CSV 字符串 'true',`null` 会变成空单元格,数字默认不带引号。在选项中切换「为所有值加引号」可实现严格符合 RFC 4180 的输出 —— 每个字段都带引号。
能处理大于 50 MB 的 JSON 文件吗?
解析在内存中进行,仅受浏览器标签页可用 RAM 的限制。实际中大到几百 MB 的文件转换都没有问题,但文件非常大时界面在解析期间可能会卡顿。转换前先用 jq 之类的命令行工具把文件切分一下。
限制说明
- 不做类型强制转换所有输出值都是字符串。如果你的 JSON 中有 ISO 8601 日期,它们会原样出现在 CSV 中 —— 工具不会把它们重新格式化为 Excel 日期序列号。需要公式就绪的日期,请在 Excel 或 Google Sheets 中做后处理。
- 异构数组扁平化结果不可预测如果数组元素拥有不同的键集合,CSV 表头就是所有键的并集。缺少某个键的行对应位置留空。这在 CSV 语义上是正确的,但对于无 schema 的 JSON 可能会产生稀疏输出。
- 不做透视或聚合本转换器只是一个纯粹的数据整形工具。它不聚合、不透视、也不计算求和。需要分析或聚合时,把 CSV 输出作为电子表格的输入即可。
平台说明
- macOS
- macOS 上的 Numbers.app 在存在 BOM 时会以正确编码打开 CSV 文件。如果你打算在 Numbers 中编辑 CSV 后再导出,请确保导出格式为「CSV UTF-8」,以避免编码漂移。
- Windows
- BOM 选项的主要动机就是 Windows 版 Excel。如果接收方在非英文语言区域下的 Windows 机器上使用 Excel,请务必启用 BOM,否则 ASCII-127 之外的字符会被破坏。
- Linux
- LibreOffice Calc 打开 UTF-8 CSV 时不需要 BOM。需要从剪贴板粘贴到 Google Sheets 以及偏好制表符输入的在线电子表格时,请使用制表符分隔符。
- Web
- 完全在浏览器中运行;没有网络往返。对典型的 API 导出,转换只需几毫秒。