在你的设备上运行 · 你的文件从不离开你的设备。
拖入.json文件,或者直接粘贴接口返回的JSON,得到一个能在Excel、WPS、Google表格或任何导入界面打开的CSV。顶层是列表就一项一行;否则使用文档里最长的记录列表,所以{"results": [...], "count": 2}每个结果一行;里面没有列表的对象变成一行。
规则是固定的,结果可以预期:嵌套对象变成点分隔的列(address.city),纯值列表在一个单元格里用分号连接,记录里的对象列表变成带序号的列(items.0.name)。表头是所有出现过的键的并集,按首次出现的顺序排列,缺字段的记录对应单元格留空。
CSV按RFC 4180写出——含逗号、引号或换行的字段会正确加引号——UTF-8编码,可选加BOM,让Excel正确显示各种文字、重音字母和符号。以=、+、-或@开头的单元格前面会加一个撇号,电子表格就会把它当文本显示,而不是当公式执行。下载前能看到前200行的预览,什么都不会离开你的设备。
不适用于: 里面没有列表、层层嵌套的单个对象——能转,但会变成一行很宽的记录,而不是一张表。
顶层是列表,它就是行。否则工具会在文档里往下找,最深八层,找出最长的对象列表。所以{"response": {"data": {"items": [...]}}}和{"results": [...], "count": 2, "next": null}都是每项一行,结果下方那一行会写明用的是哪个列表,比如results。列表旁边的值,像count和next,不属于任何一条记录,会被略去。
两个一样长的列表,离顶层更近的那个胜出。想用较短的那个,就从它的[复制到对应的],只粘贴这一段。文档里没有对象列表时变成一行;只有一个键的外壳会被跳过,所以{"order": {"id": 7, "total": 12}}得到id和total两列。
文本原样复制,日期也一样,保持JSON里的写法,比如2024-01-05T10:00:00Z。true和false按单词写出。null、空列表和空对象都变成空单元格,所以在CSV里它们和缺失的字段看起来一样。
数字完全按JSON里的写法写出:1.0还是1.0,1e21还是1e21,像12345678901234567890这样的ID即使没有引号,也保留每一位。普通的JSON读取器会把这个ID变成12345678901234567000。
列表里的列表只展开一层:"m": [[1, 2], [3]]得到m.0列,内容为1;2,以及m.1列,内容为3。对象和普通值混在一起的列表会给每一项编号,所以"x": [{"z": 1}, 2]得到x.0.z和x.1。
列名是用点把键连起来得到的,所以本身带点的键可能和嵌套的键撞名:{"a.b": 1, "a": {"b": 2}}会产生两个a.b。第二个会加上后缀,列名变成a.b和a.b_2,两个值都保留。
一般选逗号。电子表格设成用逗号作小数点的语言时,逗号分隔的文件打开后常常挤在一列里,这时选分号。制表符和竖线留给明确要求它们的系统。不管选哪种分隔符,文件都以.csv命名。
以=、+、-或@开头的单元格,在电子表格看来是公式,打开时就会执行。这样的单元格前面会加一个撇号——电子表格自己用来表示“这是文本”的符号——所以=1+1写成'=1+1。-5或+3.5这样的普通数字保持不变。
本页的其他语言版本: English · العربية · Deutsch · Français · Español · Русский · Português · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা