JSON 转 CSV

JSON 转 CSV,是指把 JSON 里的对象数组转成一行一条记录的 CSV 表格,Excel、WPS 双击就能打开。粘贴 JSON 或拖入 .json 文件即可在浏览器本地转换:表头取所有对象字段的并集,缺字段的单元格留空对齐;嵌套对象按 user.name 这样的路径展开成列;数组字段既能整块存成 JSON 字符串,也能按下标拆成 tags.0、tags.1 多列。默认带 UTF-8 BOM,中文用 Excel 打开不乱码。文件不上传服务器,免费不注册。

拖入 JSON 文件,点击选择
文件不上传 · 浏览器本地转换 · 也可直接粘贴 JSON

🔒 JSON 在你的浏览器内转换,未上传任何服务器。

如何使用JSON 转 CSV

1

把 .json 文件拖进上方虚线框,或直接把 JSON 文本粘贴到输入框。对象数组([{…},{…}])最贴合表格结构,单个对象也能转,只是结果只有一行。

2

按需调三项设置:列分隔符(逗号/分号/制表符)、嵌套展开分隔符(默认英文句点,可改成 / 或 _)、数组字段处理(默认存为 JSON 字符串,可改成按下标展开为多列)。要用 Excel 打开就保留「带 UTF-8 BOM」的勾选。

3

点「转换为 CSV」,页面会显示转出的行数与列数并预览前 12 行;确认无误后点「下载 CSV」保存,文件名沿用源 .json 的名字,直接粘贴文本时默认为 data.csv。

关于JSON 转 CSV的常见问题

JSON 转 CSV 会把我的数据上传到服务器吗?
不会。JSON 的解析、扁平化和 CSV 的生成都由浏览器里的 JavaScript 在你的设备上完成,页面不会把内容发往任何服务器,也不写入本地存储,关闭或刷新页面即全部清除。接口返回的用户资料、订单明细这类数据也可以放心粘进来。想自己验证:按 F12 打开开发者工具的「网络」面板再转一次,整个过程不会出现上传请求。
嵌套的 JSON 怎么转成 CSV 并展开成列?
嵌套对象会按路径自动扁平化成列名。{"id":1,"user":{"name":"张三","city":"上海"}} 转出来是三列:id、user.name、user.city;再往里套就继续拼成 user.addr.geo.lat。路径分隔符默认是英文句点,可以在「嵌套展开分隔符」里改成 / 或 _——原字段名本身带点号时,换一个分隔符能省掉后续对不上号的麻烦。展开深度上限 64 层,常见业务数据远用不到。
JSON 里字段不齐转 CSV 会错位丢列吗?
不会。表头取所有记录字段的并集,按字段第一次出现的顺序排列,某条记录缺哪个字段,对应单元格就留空。举个例子:第一条是 {"id":1,"name":"甲"},第二条是 {"id":2,"phone":"13800138000"},表头就是 id、name、phone 三列,第一条的 phone 留空、第二条的 name 留空,两行都不会串位。所以不用先在别处把 JSON 补齐字段再来转。
JSON 数组字段转 CSV 是拆列还是存字符串?
两种都可以,看这份 CSV 后面给谁用。默认「存为 JSON 字符串」把整个数组塞进一个单元格,如 ["设计","前端"],列数稳定、原样可还原,适合再导回程序;改成「按下标展开为多列」会拆成 tags.0、tags.1……方便在表格里逐项筛选。要留意展开是按每条记录各自的数组长度来的:几千条数据里只要混进一条 200 项的数组,整张表就会多出 200 列,而绝大多数行都是空的。
JSON 转 CSV 后 Excel 打开中文乱码怎么办?
保持默认勾选的「带 UTF-8 BOM」即可。Excel 双击打开 CSV 时不读编码声明,只看开头有没有那 3 个字节的 BOM(EF BB BF);没有 BOM 的 UTF-8 文件会被当成 GBK 读,中文就成了一串问号和方块。反过来,如果这份 CSV 是给 Python、数据库导入用的,不少解析器会把 BOM 当成第一列列名的一部分,取消勾选再转一次就行。
JSON 转 CSV 值里带逗号引号换行会串列吗?
不会。生成时按 CSV 标准(RFC 4180)转义:值里含分隔符、双引号或换行的,整格用双引号包起来,内部的双引号写成两个,行末用 CRLF 结束。所以一段带逗号又带换行的备注文字仍然老实待在一个单元格里,Excel、WPS、pandas 都能正确读回。如果下游程序对逗号特别敏感,也可以把列分隔符换成制表符,导出成 TSV。
JSON 转 CSV 后单元格前多了个单引号是怎么回事?
那是公式注入防护,不是转换出错。以 =、+、-、@ 开头的文本会被 Excel、WPS 当公式执行,别人给的 JSON 里如果混着 =WEBSERVICE(…) 这类内容,打开表格就可能真的发出请求。工具会给这类单元格前面补一个英文单引号,让它按纯文本显示。纯数字不受影响:-5、-1e3 这种仍然是数值。需要拿到原始字符串时,在下游程序里去掉开头的单引号即可。
单个 JSON 对象不是数组能转成 CSV 吗?
能。顶层不是数组时会被当成一条记录,转出「表头 + 一行数据」的 CSV。要注意接口返回常见的 {"code":0,"data":[…]} 这种包装结构:整包直接转只会得到一行,真正的列表被压进 data 一个单元格里。正确做法是先把 data 那一段单独拷出来再转,才是一条记录一行;层级看不清就先用本站的 JSON 格式化/校验 美化一遍再找。
JSON 转 CSV 一次最多能转多大的文件?
输入约 100MB 是浏览器端的拦截线,超过会提示拆分后再转;另外还有两道护栏:列数上限 10000 列、嵌套深度上限 64 层,触发时同样是明确提示而不是让页面卡死。实际体验里,几 MB、几万条记录的 JSON 在电脑上通常一两秒转完,手机会慢一些。数据再大就按记录数切成几份分别转,或者交给 jq、Python 在本机处理。
手机上怎么把 JSON 转成 CSV 表格?
用手机浏览器(iOS Safari、安卓 Chrome、微信内置浏览器等)打开本页,从「文件」App 里选 .json,或者长按复制 JSON 直接粘进输入框,转换同样在手机本地完成,不用装任何 App。两点提醒:微信里收到的 .json 要先「用其他应用打开 - 保存到文件」,再回本页选择;手机内存小,几十 MB 的 JSON 建议放到电脑上转。
JSON 直接转 Excel 还是先转 CSV 更好?
需要 .xlsx 就用本站的 JSON 转 Excel 一步到位,它还能把手机号、身份证这类长数字串按文本写入,不会变成科学计数法。选 CSV 通常是另一类需求:给程序或数据库导入、要一个体积小且任何编辑器都能打开的纯文本文件。CSV 存不了多个 sheet、列宽和单元格格式,这些只有 xlsx 里才有。

JSON 转 CSV 时嵌套对象和数组会变成什么样

一句话:嵌套对象一律拼成路径列名,数组由你选择整块存字符串还是按下标拆列,null、空对象、空数组统统留空。 拿一条记录看最直观——{"id":1,"user":{"name":"张三"},"tags":["设计","前端"]},默认设置下转出 3 列(id、user.name、tags),tags 那格是 ["设计","前端"];换成「按下标展开为多列」就是 4 列(id、user.name、tags.0、tags.1)。

常见 JSON 结构在两种数组处理方式下转成 CSV 的结果
JSON 片段存为 JSON 字符串(默认)按下标展开为多列
{"user":{"name":"张三"}}一列 user.name,值为 张三同左,嵌套对象两种方式一致
{"tags":["设计","前端"]}一列 tags,值为 ["设计","前端"]两列 tags.0、tags.1,分别是 设计、前端
{"tags":[]}一列 tags,值为 []一列 tags,留空
{"addr":{}}一列 addr,留空一列 addr,留空
{"vip":true,"score":null}两列 vip、score,值为 true 和空同左,布尔写成小写 true/false
[1,2,3]一列 value,逐行写 1、2、3同左,数组里的标量归到 value 列

表里最容易被忽略的是第三、四行:[]{} 在 CSV 里都退化成空格子,转完之后它们和 null、和空字符串长得一模一样。CSV 只是纯文本,存不下「这里本来是个空数组」这层信息—— 如果这几种空值在你的业务里必须区分,就别让数据走 CSV 这一趟。同样的道理也适用于列数:一份 1000 条的数据里若最长的 tags 有 50 项,按下标展开会多出 tags.0 到 tags.49 共 50 列,而其中绝大多数行都是空的, 表格反而更难看。

JSON 转 CSV 报错和列名冲突怎么解决

转换失败时页面会给出具体原因,绝大多数落在四类上,对照下面这段处理即可,不必反复重试。

相关工具:反过来把表格数据变成 JSON,用 CSV 转 JSON;直接要 xlsx 而不是纯文本,用 JSON 转 Excel;转好的 CSV 只想快速看看内容、 不打算再换格式,用 CSV 在线查看器;要把 CSV 变成 Excel 表格再排版,用 CSV 转 Excel