JSON 转 CSV 怎么用
- 粘贴 JSON:对象数组、单个对象、包含数组的接口返回(例如
{"data": [ … ]}),或每行一个对象的 JSON Lines。粘贴后立即转换。 - 选择分隔符。简体中文环境下的 Excel 和 WPS 表格都用逗号,保持默认即可;分号是给把小数点写成逗号的欧洲、南美地区用的。
- 选择数组的写法:整个数组作为 JSON 文本放在一个单元格,用逗号合并成一个单元格,或者分列,每个元素一列。
- 检查预览表格,然后点击下载得到 .csv 文件,或点复制把 CSV 粘贴到别处。
转换规则
CSV 是平面的表格,JSON 是树,所以转换器会把每条记录“拍平”:
- 找到数据行。最外层是数组时,每个元素一行。最外层是对象时,转换器逐层查找第一个由对象组成的数组,数据行来自一栏显示它用的路径,例如
$.data.list。国内接口常见的{"code": 0, "msg": "ok", "data": {"list": [ … ]}}可以直接粘贴。没有这样的数组时,整个对象作为一行。 - 嵌套对象变成用点连接的列名:
{"customer": {"city": "上海"}}得到customer.city列,嵌套多深都可以。 - 列是所有记录中所有键的并集,按第一次出现的顺序排列。某条记录缺少某个键时,对应单元格留空,所以字段不同的记录也能对齐。
- 值:文本原样写入,数字按 JSON 里的写法一位不差地写入,
true和false写成单词,null写成空单元格。 - 加引号遵循 RFC 4180:单元格里含有分隔符、双引号或换行时,用双引号括起来,里面的双引号写两遍。行尾使用 CRLF,这是标准和 Excel 期望的格式。
| 数组选项 | {"tags": ["红", "蓝"]} 转换为 |
|---|---|
| JSON 文本 | tags ⏎ "[""红"",""蓝""]" |
| 合并 | tags ⏎ "红, 蓝" |
| 分列 | tags.0,tags.1 ⏎ 红,蓝 |
JSON 文本保留全部细节,以后还能还原成 JSON;合并在表格里最好读;分列适合长度相同的短列表,对象数组会得到 items.0.sku 这样的列。
计算示例
输入框里的示例是一个接口风格的返回,orders 下有 2 个订单。转换器在 $.orders 找到它们,写出 7 列:
id,customer.name,customer.city,total,paid,items,note 9007199254740993,张伟,上海,1234.50,true,"[""龙井茶"",""茶杯""]", 9007199254740994,李娜,成都,89.9,false,"[""笔""]",放门口就行,谢谢
注意几个细节:客户对象变成了 customer.name 和 customer.city 两列;第一个订单没有 note,所以最后一个单元格为空;第二个订单的备注里有中文全角逗号“,”,它只是普通文字,不是分隔符,所以不需要加引号——只有半角逗号才会触发引号。订单号 9007199254740993 和 9007199254740994 也完全准确:它们都大于 253,JavaScript 自带的 JSON.parse 会把它们四舍五入,很多转换工具因此把第一个变成 …992。后端用 Long 类型的订单号、雪花 ID 时尤其要注意这一点。
数组选“合并”、分隔符选“分号”时,第二行变成:
9007199254740993;张伟;上海;1234.50;true;龙井茶, 茶杯;
用 Excel 和 WPS 打开 CSV:中文乱码怎么办
- 乱码的原因:CSV 文件本身不记录编码。在简体中文 Windows 上双击打开 CSV 时,Excel 会按系统的 ANSI 代码页,也就是 GBK(代码页 936)读取。如果文件是不带标记的 UTF-8,“张伟,上海”就会显示成“寮犱紵,涓婃捣”。
- 解决办法:勾选添加 UTF-8 BOM(默认已勾选)。BOM 是文件开头三个看不见的字节 EF BB BF,告诉 Excel 这是 UTF-8 文件,加上之后 Excel 和 WPS 表格都能直接正确显示中文。如果文件要交给程序读取(例如 Python 的 csv 模块、数据库导入),有的程序会把 BOM 当成第一个列名的一部分,这时可以取消勾选,或者用
utf-8-sig编码读取。 - 已经乱码的文件:在 Excel 里用数据 › 从文本/CSV 导入,把“文件原始格式”选成“65001: Unicode (UTF-8)”,就能正确读入。
- 分隔符:中国大陆的区域设置以句点作小数点、以逗号作列表分隔符,所以逗号分隔的 CSV 会正确分列。只有在德语、法语等区域设置的电脑上,Excel 才会期望分号。
- 长数字:CSV 里的数字一位不差,但 Excel 只保留 15 位有效数字:订单号 9007199254740993 会显示成 9.0072E+15,并被存成 9007199254740990;18 位身份证号的最后三位会变成 0。这类列请在导入时设成文本,或者在 JSON 里就把它们写成字符串。Excel 还会去掉 010020 这类编号的前导零。
- 公式注入:以 =、+、- 或 @ 开头的单元格可能被表格软件当成公式执行。如果 JSON 来自不可信的来源,打开前先检查这些单元格。
限制与小技巧
- 几 MB 的文件大约一秒就能转换完。结果超过 200,000 个字符时只提供下载,因为太长的文本显示和复制都会很慢。
- JSON 不合法时会显示错误所在的行和列。开着中文输入法打出的全角冒号“:”、逗号“,”和中文引号是最常见的原因,JSON 格式化会逐一解释每种错误和改法。
- 如果接口返回里有好几个数组,请只粘贴需要的那一个,或者把它移到最前面。
- 一切都在浏览器里完成:JSON 和 CSV 都不会离开你的设备,也不会保存,刷新页面即清空。
常见问题
我的数据会被上传吗?
不会。转换由你浏览器里的 JavaScript 完成,下载文件也是在本机生成的,所以可以放心处理导出的订单、客户名单或含有密钥的接口数据;页面加载后断网也能使用。
为什么 Excel 打开 CSV 中文是乱码?
因为 Excel 按 GBK 读取了 UTF-8 文件。保持添加 UTF-8 BOM 勾选,重新下载并打开新文件即可;已经下载的旧文件可以用“数据 › 从文本/CSV”导入,并选择 UTF-8 编码。
为什么 Excel 把所有内容放在一列里?
你的 Excel 使用的列表分隔符和文件不一致。中文 Windows 默认是逗号,用默认设置即可;如果电脑的区域设置是德国、法国等用逗号作小数点的地区,Excel 会期望分号,请把分隔符改成分号。
嵌套的 JSON 怎么转换?
嵌套对象会展开成用点连接的列名:{"user": {"address": {"city": "杭州"}}} 得到 user.address.city 列。数组按你选择的方式处理:一个单元格里的 JSON 文本、合并后的值,或每个元素一列。
能转换 JSON Lines(NDJSON)吗?
可以。每行粘贴一个 JSON 值即可,这是日志文件和数据导出常用的格式;每行变成一行数据,所有行的列会合并在一起。
最后更新:2026年10月16日