JSON → CSV 转换器,免费

将 JSON 对象数组转换为 CSV 或 TSV 格式。

使用方法

1. 将 JSON 对象数组(或单个对象)粘贴到输入区。

2. 选择分隔符 · CSV 选逗号、TSV 选制表符,或其他格式。

3. 点击转换以生成 CSV 输出。

4. 复制到剪贴板或下载为文件。

嵌套的对象和数组在 CSV 输出中会被序列化为 JSON 字符串。所有处理都在客户端完成 · 您的数据从不离开浏览器。

为什么 JSON 转 CSV 是如此常见的工作流

JSON 是现代 web API 的主导负载格式;CSV 则是表格数据的最小公分母格式。Excel、Google Sheets、SQL 的 LOAD DATA、R、Pandas、Tableau、Power BI 以及几乎所有 ETL 流水线都能开箱即用地摄取 CSV。所以当 API 的输出需要落到某位干系人面前的电子表格里、或者落到用于分析的数据库里时,总得有人把 JSON 摊平成行。本工具在你的浏览器里完成这步摊平,无需服务器往返,也不会上传可能敏感的数据。

CSV 格式(RFC 4180)

并不存在唯一的正式 CSV 标准,但 RFC 4180(2005 年 10 月,《Common Format and MIME Type for Comma-Separated Values (CSV) Files》)是业界最接近规范参考的文档。大家都同意的规则:

为什么是四种定界符而非一种

默认是逗号,但每种定界符都解决一个具体问题:

摊平嵌套 JSON 的三种策略

JSON 是分层的,CSV 是平面的。两者之间没有通用的、无损的映射。当输入包含嵌套对象或数组时,每个转换器都必须做出选择:

  1. 作为 JSON 字符串内联。嵌套部分被重新序列化为 JSON 并放入一个 CSV 单元格里。这是本工具的默认做法。无损;可安全往返;消费者如需结构则需自行解析内部 JSON。
  2. 点号键摊平。{address: {street, city}} 变成列 address.streetaddress.city。Pandas 的 json_normalize 就是这样工作的。对分析师更整洁,但深层嵌套数据下列数会爆炸。
  3. 行展开。数组变成多行,父字段重复。{name: "Alice", tags: ["a", "b"]} 变成两行,都带有 name=Alice。最适合一对多关系;会失去「一条记录一行」的心智模型。

如果你需要点号键或行展开的输出,请在粘贴之前预处理 JSON,用一小段 Python/Node 脚本,或者 Pandas 的 json_normalize

表头、类型往返与 Excel 的自动格式陷阱

JSON 有真正的类型系统(数字、字符串、布尔、null、数组、对象);CSV 只有字符串。约定是消费者根据上下文推断类型。本工具用所有输入对象上所有键的并集生成表头行,把缺失字段留为空单元格,把布尔写为 true/false,把 JSON null 写为空单元格。

Excel 的「帮忙」有时会伤人:

CSV 注入,一条值得知道的安全提示

如果一份 CSV 将在 Excel 或 Google Sheets 中打开,那么以 =+-@ 开头的单元格会被解释为公式。OWASP 的 CSV Injection 页面 记录了这类攻击,用户提交的字段中若出现像 =cmd|' /c calc'!A0 的恶意串,在管理员打开导出文件时就可能执行命令。防御做法:给任何以这四个字符开头的单元格前缀一个单引号,或者用引号加前导撇号包起来。如果你导出的是用户生成内容,这点很重要。

转换器处理的常见边界情况

何时使用本工具

隐私

CSV 导出几乎总是包含 PII,客户记录、员工数据、交易日志、联系人列表。服务器端转换让每条记录都流经第三方基础设施,于是它会出现在传输日志、服务器日志,乃至缓存响应里。基于浏览器的转换让数据留在你的机器上。此处所有的摊平与加引号都在你浏览器里的 JavaScript 中完成;不会上传。

常见错误

  1. 用错适合受众的定界符。把逗号 CSV 发给法语 Excel 用户会得到只有一列的文件。把定界符匹配到接收方的本地化。
  2. 粘贴单个对象而不是数组。单个对象会被转换为一行带键作表头的 CSV。多条记录请用数组包起来。
  3. 期待 Pandas 式的摊平。本工具对嵌套对象按 JSON 字符串放入单元格序列化。如果你需要 address.street 这样的列,请先摊平。
  4. 对超大数字使用 CSV。JSON 安全表示到 253−1(约 9 千万亿)的整数。超出请以字符串传输。即便 CSV 保留了,Excel 也会把长数字 ID 弄坏。
  5. 在 Excel 中打开而不考虑编码。非 ASCII 字符在 Windows 下的 Excel 需要 UTF-8 BOM;Google Sheets 与现代 Excel for Web 不需要。
  6. 在不清洗公式前缀的情况下导出用户生成文本。=+-@ 开头的单元格在 Excel 与 Sheets 中是公式。CSV 注入是真实存在的攻击,目标是打开导出文件的管理员。

常见问题

我的 JSON 含有嵌套对象,是怎么处理的?

每个嵌套对象或数组会被序列化为其 CSV 单元格内的 JSON 字符串。所以 {user: {name: "Alice", role: "admin"}} 变成一列 user,内容为 {"name":"Alice","role":"admin"}。这种方式可无损往返。如果你需要 user.nameuser.role 分列,请用 Pandas 的 json_normalize 或一段小的摊平脚本预处理。

为什么我的非英文字符在 Excel 里看起来坏掉了?

Windows 上的 Excel 默认以 Windows-1252 打开 CSV。没有字节顺序标记 (BOM) 的 UTF-8 CSV 会显示成乱码(é → é)。解决办法:要么把文件保存为带 UTF-8 BOM,要么使用 Excel 的「数据 → 从文本」导入向导并显式选择 UTF-8,要么在 Google Sheets 里打开,它能正确处理无 BOM 的 UTF-8。

工具会处理字段内的逗号吗?

会。按 RFC 4180,包含定界符、换行或双引号的字段会被自动加上双引号。内部的双引号通过加倍来转义。所以 San Francisco, CA 变成 "San Francisco, CA"She said "hi" 变成 "She said ""hi"""

我的 JSON 会发到服务器吗?

不会。转换完全在你的浏览器中完成。文本框内容不会被传输、记录或在任何地方存储。这一点很重要,因为导出的记录通常包含 PII(客户数据、员工信息、交易历史)你不希望它们在别人的基础设施里流动。

我能得到 Tab 分隔(TSV)的输出吗?

能,在定界符下拉里选「Tab」。当你的数据含有逗号(地址、自由文本字段、带千分位的财务数据)且不希望每隔一格就要加引号时,TSV 是合适的选择。许多生物信息学与科学数据格式默认使用 TSV。

尺寸限制是多少?

看你的浏览器能装多少。因为没有服务器参与,所以没有服务端限制。在现代设备上,几十兆的 JSON 一两秒就转完;几百兆的载荷开始变慢。对非常大的数据集,请分批,或换到命令行的流式转换器。

相关工具