JSON 转 CSV 转换器
即时将 JSON 数组转换为 CSV,支持嵌套对象展开(点号路径)、自定义分隔符和 RFC 4180 转义。免费,在浏览器中处理。
- 在浏览器中处理
- 数据不离开你的设备
- 免费 · 无需注册
用微信扫描以下二维码即可分享
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。
示例
基础转换
输入 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 内容。