JSON 转 CSV 转换器

即时将 JSON 数组转换为 CSV,支持嵌套对象展开(点号路径)、自定义分隔符和 RFC 4180 转义。免费,在浏览器中处理。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
分隔符 用逗号、分号或 Tab 分隔列。含选定分隔符、引号或换行的字段会自动加引号。
更多 CSV 选项
展开嵌套对象 开启时将非空嵌套对象展开为点号路径列;关闭时保留为 JSON 文本。数组和空对象始终留在一列。
包含表头 将所有行键名的并集作为首行表头。缺失值输出为空字段。
公式防护 关闭时保留有风险的字符串。前加单引号或 Tab 会保护匹配的字符串及表头,并给 CSV 字段加引号。数值不变。
下载文件加 UTF-8 BOM(Excel) 为下载文件添加 UTF-8 BOM,方便 Excel 识别。显示和复制的 CSV 不含额外 BOM。
用两条带嵌套地址的用户记录替换输入,并按当前选项立即转换。
清空 JSON、CSV 和状态,保留五组选项。在工具内按 Ctrl/⌘+L 也会清空结果。
输入 JSON 数组。停止输入 300 毫秒后转换,修改选项立即生效。JSON 无效时清空输出。
CSV 输出
按当前 UTF-8 BOM 设置,将完整 CSV 保存为 export.csv。输出为空时不下载。
复制显示的完整 CSV,不添加 BOM。输出为空时不复制。

输入 JSON 数组或载入示例以生成 CSV。

示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

示例

基础转换

输入 JSON:

[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]

输出 CSV:

id,name
1,Alice
2,Bob

嵌套对象展开

输入 JSON:

[{"user":{"name":"Alice","age":30}}]

输出 CSV(展开开启):

user.name,user.age
Alice,30

订单导出:20 位订单号

电商后台导出的订单 JSON 通常把订单号写成字符串,收货地址是嵌套对象。下面这条记录的订单号有 20 位:

[{"订单号":"20261008123456789012","收货人":"张伟","手机":"13800138000","金额":59.9,"地址":{"省":"北京市","区":"东城区"}}]

输出 CSV:

订单号,收货人,手机,金额,地址.省,地址.区
20261008123456789012,张伟,13800138000,59.9,北京市,东城区

中文键名原样成为列名,嵌套的地址展开成 地址.省、地址.区 两列。工具把订单号逐字写出,CSV 本身不带类型。变化发生在 Excel 打开文件时:微软支持页面 保留前导零和大数 写明,Excel 会自动删除前导零、把大数转换为科学记数法,而且最多保留 15 位有效数字,第 15 位之后的数字会变成 0。这个订单号有 20 位,直接用 Excel 打开时后 5 位会变成 0。要保留原样,按该页面的做法,在「数据」选项卡选「从文本/CSV」导入,在查询编辑器里把这一列的数据类型改成「文本」。

用户评论:以 + 开头的值

评论区里常见「+1」。下面两条评论导出时,第一条以 + 开头,第二条含半角逗号。打开「更多 CSV 选项」,把公式防护设为「前加 ’」:

[{"用户":"小李","评论":"+1 同求链接"},{"用户":"阿杰","评论":"颜色偏暗, 不过很便宜"}]

输出 CSV:

用户,评论
小李,"'+1 同求链接"
阿杰,"颜色偏暗, 不过很便宜"

状态栏显示 已转换 2 行 · 已对 1 个值加公式防护。第一条加了 ’ 并用引号包起来;第二条没有公式风险,只因为含逗号按 RFC 4180 加了引号。全角逗号「,」不是分隔符,不会触发引号。公式防护默认关闭,关闭时状态栏会提示有几个值以这些字符开头。

RFC 4180 规范

本工具遵循 RFC 4180 CSV 标准。含有分隔符、双引号或换行的字段用双引号包裹,字段内的双引号转义为 ""。行与行之间用 LF 换行,而不是 RFC 4180 写的 CR LF;Excel、LibreOffice、pandas 都能读取。

公式防护

以 =、+、-、@、Tab 或换行开头的单元格,在表格软件里打开时可能被当作公式执行(OWASP:CSV Injection)。工具会统计这类字符串值并在状态栏提示。开启公式防护后,这些值会按 OWASP 的建议加前缀并加引号:前加 ’ 加 ‘,前加 Tab(Excel) 加一个 Tab(OWASP 说明 Excel 保存后重新打开时 Tab 不会丢)。输入:

[{"name":"Ann","comment":"=HYPERLINK(\"http://example.com\",\"Click\")"}]

选「前加 ‘」时输出:

name,comment
Ann,"'=HYPERLINK(""http://example.com"",""Click"")"

只处理 JSON 字符串,-5 这类数字、布尔值和写成 JSON 文本的数组 / 对象保持不变。公式防护会改变数据(如 +86 10 1234 5678 这样的电话号码也会加前缀),所以默认关闭,需要时状态栏会提示。

Excel 与 BOM

下载的文件默认以 UTF-8 BOM(字节 EF BB BF)开头。微软支持页面 Opening CSV UTF-8 files correctly in Excel 写明:带 BOM 的 UTF-8 CSV 可以直接打开;没有 BOM 时,Windows 版 Excel 双击打开会按系统代码页读取,中文会显示成乱码。不认 BOM 的程序可能把它读进第一个列名(Python 用 encoding=“utf-8” 打开得到 \ufeffid,用 “utf-8-sig” 则会去掉),这时关闭「下载文件加 UTF-8 BOM」。复制的内容不含 BOM。

限制

  • 输入必须是 JSON 数组。粘贴单个对象会提示「输入必须是 JSON 对象数组」,在外面加一对 [ ] 即可。数组里不是对象的元素(如 [1,“two”,null])放进同一个 value 列。
  • 空的嵌套对象和数组不展开:"meta":{} 得到 meta 列,值为 {};[“a”,“b”] 这样的数组写成一列 JSON 文本。
  • 超过 253 的整数在解析 JSON 时会丢失精度:12345678901234567890 会写成 12345678901234567000。长 ID 请在 JSON 里写成字符串。
  • 行之间用 LF 分隔。需要 CR LF 的程序要先转换。
  • 只做 JSON 到 CSV。反方向请用 CSV 转 JSON 工具。

FAQ

支持哪种 JSON 格式?

工具接受 JSON 对象数组,例如 [{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}],每个对象转换为一行 CSV。

嵌套对象展开是如何工作的?

开启「展开嵌套对象」后,address.city 这样的嵌套字段会成为独立的 CSV 列(列名为 address.city)。关闭时,整个嵌套对象以 JSON 字符串形式填入单个列。

不同行的 key 不同时怎么处理?

工具会收集所有行 key 的并集作为表头,缺失字段输出为空字符串。

特殊字符如何处理?

含有分隔符、双引号或换行的字段会按 RFC 4180 规范自动用双引号包裹,字段内的双引号转义为两个连续双引号。

用 Excel 打开为什么是乱码?

Windows 版 Excel 双击打开 CSV 时,只有文件以字节顺序标记(BOM)开头才按 UTF-8 读取,否则按系统代码页读取,中文会变成乱码。下载的文件默认带 BOM;如果关掉了这个选项,请在「数据」选项卡选「从文本/CSV」导入,并选择 UTF-8 编码。

数据会上传到服务器吗?

不会。CSV 在浏览器标签页里生成,输入的 JSON 不会发送到服务器,也不会保存到浏览器存储。编辑完输入框、焦点移开时,或修改选项、或载入示例时,页面的统计只记录一次使用事件(工具名和动作 convert),不包含 JSON 或 CSV 内容。