跳到主要内容

JSON 转 TSV:对象数组直接粘进 Excel 和 Google 表格

把 JSON 对象数组转成制表符分隔的表格,字段名做表头,值做行,直接粘进 Excel 或 Google 表格不弹分隔符询问。文中给出真实输入输出例子,讲清嵌套字段拍平的取舍和数据导出场景。

发布于 作者 李雷
#json #tsv #数据导出 #表格 #excel

JSON 转 TSV:对象数组直接粘进 Excel 和 Google 表格

我经常拿到一段接口返回的 JSON 数组,想立刻丢进表格做个透视或者给同事看一眼。以前我会先存成文件,再走 Excel 的导入向导,选分隔符、选编码,折腾两分钟。后来我改成把 JSON 转成 TSV,点进 A1 单元格直接粘,数据当场铺到各列,这条路省事太多。这篇就把这条路讲清楚。

TSV 到底是什么,凭什么比 CSV 更适合粘贴

TSV 是制表符分隔值。单元格之间放一个 tab,行之间放一个换行,就这么简单。它和 CSV 最大的区别在分隔符:CSV 用逗号,而日常数据里逗号太常见,地址、金额、备注里随手就有,于是 CSV 不得不套引号、做转义,粘贴出错往往就出在这里。tab 不一样,真实文本里几乎不会冒出一个 tab,所以单元格干干净净,完全不用引号。

Excel 和 Google 表格默认就按 tab 拆列、按换行拆行。这意味着你把 TSV 粘进左上角单元格,它自己就铺开了,不会弹出那个在非美区常见的"逗号还是分号"的分隔符询问。目标是粘进表格,TSV 是更稳的格式;后续程序明确要 .csv 文件,再用 CSV 也不迟。

字段名做表头,值做行,缺字段也对齐

转换的核心规则只有一条:每个对象的键变成一列,值落进对应的行。表头取所有对象键的并集,按每个键首次出现的顺序排。

举个具体的:第一个对象有 nameage,后面某个对象多了一个 city,那列就排成 nameagecity 三列。第一个对象因为没有 city,在该列留空,不会错位。这点对混合 API 响应这类字段不齐的数据特别关键,各行都稳稳对齐在正确的表头底下,不会一行一个样。

一个真实例子:三个字段的数组

输入这段 JSON 对象数组:

[
  {"name": "Ada", "age": 36, "city": "London"},
  {"name": "Linus", "age": 54},
  {"name": "Grace", "city": "New York"}
]

工具扫一遍,键的并集按首次出现是 nameagecity,于是输出的 TSV(下面用 代表 tab)是:

name→age→city
Ada→36→London
Linus→54→
Grace→→New York

Linus 没有 city,末尾留空;Grace 没有 age,中间留空。复制这段,点进 Excel 或 Google 表格的 A1,按 Ctrl+V 或 Cmd+V,三行三列当场铺好。整个过程在浏览器本地完成,JSON 不上传服务器。

嵌套字段怎么办:字符串化还是拍平

一个单元格只能放一个值,所以遇到嵌套对象或数组,这个工具的做法是把它 JSON 字符串化塞进单元格。比如 {"city":"London"} 会原样变成文本 {"city":"London"},数组 ["a","b"] 变成 ["a","b"]。好处是什么都不丢,这个单元格之后还能用 JSON.parse 重新读回来。

但如果你真正想要的是把 address.cityaddress.zip 拍平成两个独立的列,字符串化就不是你要的了。这种时候换个工具:把同一段 JSON 丢进 JSON 转 CSV 工具,它带拍平开关,能把嵌套键展开成点号列。先想清楚你要的是无损的单格,还是拍平的多列,再选工具。

值里含 tab 或换行:转义还是替换

唯一可能把粘贴搞乱的,是某个值本身含有 tab、换行或引号。所以这件事交给你来定:

  • 转义模式(默认):把这类单元格用双引号包起来,内部引号翻倍,这套写法表格软件认得,原始字符全部保留。
  • 替换模式:把值里的每个 tab 和换行换成一个空格,这一行就绝不会溢出到多余的单元格或多余的行。

我的经验是,只要目标是粘进 Google 表格、又想零意外,就用替换;需要保留原文里的换行,再用转义。另外提醒一句,工具要的是顶层对象数组 [{...},{...}],贴一个光秃秃的对象 {...} 只会得到一行表,记得用方括号把记录包起来。

几个真实的数据导出场景

第一种,把接口响应交给不跑脚本的同事。财务或运营天天用 Excel,你手上的数据是 JSON,转成 TSV 粘进工作簿发过去,他们拿到能筛能做图的干净列,你也不用为了挪一份数据专门写导出脚本。

第二种,给要求 tab 分隔的批量导入准备数据。很多数据库加载器和后台导入页默认接受 tab 分隔上传,正是因为 tab 绕开了 CSV 的引号麻烦。按导入器的要求开或关表头行,选替换模式让任何内嵌 tab 都不挤错列,下载 .tsv 直接喂进去。

需要的话,现在就去 JSON 转 TSV 工具 把你手上的数组贴进去试一遍,从原始 JSON 到一张可排序的表格,大概半分钟。


Made by Toolora · Updated 2026-06-13