CapypixEnglish

JSON 转 Excel / CSV

接口返回的数据、后台导出的 JSON,粘贴进来就能转成 Excel 或 CSV 表格。嵌套字段自动展开成列,中文不乱码,数据不离开你的浏览器。

嵌套对象
数组
分隔符
Excel 兼容

🔒 JSON 在你自己的设备上转换,不会上传到任何服务器。设置会记在这个浏览器里,下次打开不用重选。

JSON 怎么转成 Excel 表格

  1. 把 JSON 粘贴到输入框里,或者把 .json、.jsonl 文件拖到上面的框里,一次放多个也行。粘贴的内容边输边转,不用点按钮。
  2. 看一眼下方的预览表。接口返回里有好几组数据时,在数据来源里选要哪一组;嵌套对象、数组、分隔符按需要改,改完立刻重新转换。
  3. 点下载 Excel得到 .xlsx,点下载 CSV得到 CSV,也可以复制 CSV直接粘到别处。转了两个以上的文件,用全部下载(ZIP)一次打包。

哪些 JSON 能转成表格

表格是一行一行的,所以 JSON 里要有「一条条记录」。最常见的是对象数组,比如 [{"id": 1, "name": "张三"}, {"id": 2, "name": "李四"}],每个对象一行。

接口返回的数据通常还包着一层,例如 {"code": 0, "msg": "ok", "data": {"list": […], "total": 120}}。工具会往里找,默认选 data、list、items、records 这类常见名字下面最大的那组记录,这个例子选中的就是 data.list;选得不对,在预览上方的「数据来源」里换一组即可。

以 ID 为键的对象,如 {"u1001": {"昵称": "小王"}, "u1002": {"昵称": "小李"}},会变成每个键一行,键名放进 key 列。二维数组按原样逐行输出,不另加表头;每行一条 JSON 的 JSON Lines 文件,一行就是一条记录。只有一个对象也能转,可以排成一整行,也可以排成「每个字段一行」的两列表。

嵌套字段怎么变成列

拿一段电商订单数据举例:[{"订单号": "202410280001234567", "收货人": "张三", "地址": {"省": "广东", "市": "深圳"}, "标签": ["新客", "包邮"]}, {"订单号": "202410280001234568", "收货人": "李四", "地址": {"省": "浙江", "市": "杭州", "区": "西湖区"}}]

转出来是 6 列:订单号、收货人、地址.省、地址.市、地址.区、标签。表头收集的是所有记录里出现过的字段,不只看第一条;只有第二条才有的「地址.区」排在「地址.市」后面,不会被挤到最右边。张三没有区,李四没有标签,这两个格子留空。标签这种只装着文字或数字的数组,用「; 」连成一格:新客; 包邮。

数组里装的是对象时,比如订单里的商品明细 [{"名称": "T恤", "数量": 2}],会整段写成 JSON 文本放进一个格子,既不拆成多行,也不展开成「商品.0.名称」这种每行都不一样的列。想保留原来的层级,把「嵌套对象」改成「保留 JSON 文本」:顶层字段照样各占一列,嵌套的对象整段写成 JSON 放进格子里。「数组」也改成「保留 JSON 文本」的话,只装文字、数字的数组同样写成 JSON,不再用「; 」连起来。

几个常见用法

Excel 打开 CSV 中文乱码怎么办

CSV 是纯文本,文件里并不注明自己用的是哪种编码。中文版 Windows 上的 Excel 双击打开 CSV 时,如果文件开头没有 BOM 标记,往往会按系统默认的 GBK(代码页 936)去读;网页、接口和程序生成的 CSV 却几乎都是 UTF-8,两边对不上,「名字」就成了「鍚嶅瓧」这样的乱码。

「UTF-8 BOM(中文不乱码)」默认勾选,会在文件最前面写入 EF BB BF 三个字节,Excel 看到就会按 UTF-8 读。别人发来的、没带 BOM 的 CSV,可以在 Excel 里走「数据 › 从文本/CSV」,把「文件原始格式」选成「65001: Unicode (UTF-8)」再加载。最省事的还是直接下载 .xlsx,Excel 文件里的文字本来就按 Unicode 保存,没有猜编码这一步。

反过来,CSV 是给程序读的,比如导入数据库或交给 Python 脚本,最好取消勾选 BOM,有的程序会把这三个字节当成第一列列名的一部分。另外,拖进来的 JSON 文件不必是 UTF-8:老系统导出的 GBK(GB18030)编码文件,工具会自动认出来,中文照样正常显示。

身份证号、订单号变成 1.10101E+17

Excel 的数字最多保留 15 位有效数字。18 位的身份证号 110101199003071234 写在普通 CSV 里,Excel 会把它当数字读进去,存成 110101199003071000,单元格里显示成 1.10101E+17 这样的科学计数法。后三位已经变成 0,文件一保存就再也找不回来。十几二十位的订单号、物流单号、银行卡号,遭遇都一样。

「长数字、开头的 0 原样保留」默认勾选。CSV 里 16 位及以上的整数、以 0 开头的数字串、以 + 开头的号码,都会写成 ="110101199003071234" 的样子,Excel 把它当作一个返回文字的小公式,显示出来就是原来的号码。预览下方会提示有多少个格子做了这样的处理。下载 .xlsx 则用不着这一步:JSON 里的字符串一律存成文本格,16 位及以上的整数也存成文本,一位不丢。

12 到 15 位的数字,比如 13 位的毫秒时间戳,数值本身不会丢,只是 Excel 的「常规」格式会把 12 位及以上的数显示成科学计数法。选中这一列,把单元格格式设成「数值」、小数位数 0,完整的数字就出来了。

开头的 0、+86 和被改成日期的值

邮编 010010、工号 00123 这类以 0 开头的编号,用 Excel 打开普通 CSV 时,开头的 0 会被吃掉;写成 +8613800138000 的手机号会丢掉加号,变成一个 13 位的数字,还显示成科学计数法。勾选「长数字、开头的 0 原样保留」后,这两类值都会原样显示。

日期是这个选项管不到的。商品规格里的「1-2」、尺码「3/4」这样的文字,Excel 打开 CSV 时会自作主张改成 1 月 2 日、3 月 4 日,工具不会替你拦。数据里有这类值,请下载 .xlsx,文本格里的内容 Excel 不会再去猜。

还要知道,="…" 这个写法是专门照顾 Excel 的。CSV 要导入数据库、交给程序处理,或者对方用的是别的表格软件,就可能原样读到 ="00123" 这几个字符,这时请取消勾选。拿不准对方用什么软件打开,就发 .xlsx。

「数据来源」怎么选

只要 JSON 顶层是一个对象,预览上方就会出现「数据来源」下拉框,列出能当作表格行的位置和各自的行数。工具会往对象里找几层,既找对象数组,也找以 ID 为键的对象。

默认的选法是这样的:整个 JSON 本身就以 ID 为键时,每个键一行;不是的话,优先选 data、items、results、list、records 这类常见名字下最大的数组;这类名字都没有,就选行数最多的那组;一组也找不到,就把整个对象当成一行。下拉框里还有三个选项:

多大的数据能转

JSON 报错怎么改

内容不是合法 JSON 时,工具会指出第几行第几列出错,把那一行摘出来,用 ^ 标出位置,并写明原因。下面几种最常见:

为什么不用上传

订单、会员这类数据里常有手机号、收货地址、身份证号,都属于个人信息。贴进一个会把内容发到服务器的在线工具,等于把数据交给了一个你并不了解的第三方。这个页面的解析、展开和生成 CSV、Excel 都在浏览器里完成,内容不会发出去;浏览器里记下的只有你选过的选项,不包括数据本身。

不用这个工具,还能怎么转

常见问题

JSON 怎么转 Excel?

把 JSON 粘贴到上面的输入框,或者拖入 .json 文件,确认预览没问题后点「下载 Excel」。得到的 .xlsx 只有一张表,表名取自文件名(粘贴的内容叫 Sheet1);表头加粗并冻结,往下翻也看得见,每列都带筛选按钮,列宽按内容自动设好。

数据会上传吗?

不会。解析和转换都在你自己设备的浏览器里完成,粘贴的内容、拖入的文件都不会发送到任何服务器,下载的 CSV 和 Excel 也是在本机生成的。页面只会在这个浏览器里记住你选过的选项。

能一次转多个文件吗?

能。一次拖入或选择多个文件,每个文件在列表里占一行,显示行数和列数,各有 CSV、Excel 下载链接;点哪一行就预览哪一行。两个以上转换成功后,可以用「全部下载(ZIP)」把所有 CSV 打包下载。

用 Excel 打开 CSV 中文乱码怎么办?

保持「UTF-8 BOM(中文不乱码)」勾选,重新下载一次就好。已经拿到手的 CSV,在 Excel 里用「数据 › 从文本/CSV」导入,文件原始格式选 65001: Unicode (UTF-8)。也可以干脆下载 .xlsx,没有编码问题。

身份证号后几位变成 0 怎么办?

Excel 只保留 15 位有效数字,18 位身份证号被当成数字读进去,后三位就成了 0。勾选「长数字、开头的 0 原样保留」再下载 CSV,或者直接下载 Excel,身份证号会以文本保存,一位不少。已经被 Excel 改过并保存的文件没法还原,只能从原始 JSON 重新转。

嵌套数组怎么处理?

只装着文字、数字的数组,用「; 」连成一格;数组里有对象或数组时,整段写成 JSON 放在一格里。一条记录不会被拆成多行。如果这组数组在单个对象里(比如一张订单的商品明细),它会出现在「数据来源」里,选中后每件商品一行。

数据量很大能转吗?

单个文件最大 200 MB,转换放在后台线程里跑,页面一般不会卡住。Excel 每张表最多 1,048,576 行,超出的部分 .xlsx 放不下,页面会提醒。手机内存小,特别大的文件建议用电脑转。

为什么 1.50 变成了 1.5?

JSON 里的 1.50 和 1.5 是同一个数,工具按 JavaScript 的写法输出数字,所以写成 1.5,1.0 也会写成 1。金额要显示两位小数,在 Excel 里把这一列设成两位小数即可;一定要原样保留写法的,需要 JSON 里本来就用字符串,比如 "1.50"。

能把 Excel 转回 JSON 吗?

这个工具只做 JSON 转 CSV、Excel 这一个方向,不能反向转换。装了 Python 的话,可以用 pandas 读取 Excel 再输出 JSON,写法见上文。

转出来的列是按什么顺序排的?

按字段第一次出现的顺序排,嵌套字段跟着它的上一级走:地址.区 即使只在后面的记录里出现,也会排在 地址.市 旁边。有一个例外:在同一个对象里,纯数字的键名(比如 "2024")会排在其他键前面,这是 JavaScript 对象本身的规则。

更多免费工具