UltKit

JSON转CSV

把API响应、应用导出数据和日志文件从JSON转成行和列。上传.json、.jsonl或.ndjson文件,下载每条记录占一行的CSV。

数据转换器

或将CSV, TSV, TXT … 文件拖放到此处 ·

单个文件最大 95 MB· 最多 20 个文件· 30 分钟后删除

输出

文件在我们的服务器上处理,并在 30 分钟后删除。

使用方法

  1. 1

    上传JSON数据

    添加包含对象数组的文件,或每行一个对象的 JSON Lines 文件。最多 20 个文件,每个不超过 95 MB。

  2. 2

    检查CSV设置

    文本编码默认选中带 BOM 的 UTF-8,这样 Windows 上的 Excel 能正确显示带重音的字符。如果你的 Excel 需要分号,请把分隔符设为分号;对要求严格的导入工具,可以开启所有值加引号。

  3. 3

    转换并下载

    点击转换为 CSV。表头行会列出记录中出现过的所有键;你可以直接打开文件,或导入到任何支持 CSV 的地方。

JSON转CSV会把一组记录变成表格:每个对象成为一行,每个键成为一列,嵌套字段则展开成各自独立的列。

为什么要把JSON转换为CSV

JSON 是网络服务之间交换数据的方式。订单系统、支付服务商、分析 API 和表单工具都以 JSON 输出数据,MongoDB、Firebase 等 NoSQL 数据库也以类似 JSON 的结构存储文档。这对程序来说很理想,对其他人却很头疼,因为在文本编辑器里打开一个 5 MB 的 JSON 文件,看到的只是一堵大括号墙。

CSV 则是相反的取舍。它无法表达嵌套和类型,但所有电子表格、BI 工具、CRM 导入功能和数据库加载器都能读取。运营经理靠转换把订单列表放进数据透视表,数据分析师靠转换把 API 拉取的数据导入 SQL 表,客服主管靠转换把筛选后的导出文件分享给同事。如果数据原本是 XML,可以用 XML转CSV 对标签做同样的扁平化。

嵌套JSON转CSV:展开机制详解

扁平化规范化 · 去嵌套
把嵌套对象写成同一行中的额外列,列名取自指向每个值的路径,因此 {"customer":{"city":"Austin"}} 会变成一列 customer.city,值为 Austin。
API 响应中的两个订单,扁平化后
[{"id":5012,"total":42.9,"paid":true,"customer":{"name":"Ada Okafor","city":"Austin"}},
 {"id":5013,"total":18,"paid":false,"customer":{"name":"Lin Wei","city":"Toronto"}}]

id,total,paid,customer.name,customer.city
5012,42.9,true,Ada Okafor,Austin
5013,18,false,Lin Wei,Toronto

JSON变体与表格输出格式

from ↓ · to →CSVTSVXLSX
JSONJSON to CSV: yesJSON to TSV: yesJSON to XLSX: yes
JSONLJSONL to CSV: yesJSONL to TSV: yesJSONL to XLSX: yes
NDJSONNDJSON to CSV: yesNDJSON to TSV: yesNDJSON to XLSX: yes
YAMLYAML to CSV: yesYAML to TSV: yesYAML to XLSX: yes
XMLXML to CSV: yesXML to TSV: yesXML to XLSX: yes
supported not offeredJSON Lines 和 NDJSON 每行存放一个 JSON 对象,是 BigQuery 和许多日志工具的导出格式。

记录内部的列表是扁平行唯一无法妥善容纳的内容。一个有五个商品明细的订单,实际上是两张表:订单和商品。如果这些列表很重要,请把数组提取到单独的 JSON 文件中再单独转换,这样每个商品明细都有自己的一行,旁边附有订单 ID。

JSON与CSV格式要点

JSON

JavaScript 对象表示法

JSON 是一种轻量级结构化数据文本格式,由 Douglas Crockford 在 21 世纪初推广,并被标准化为 RFC 8259 和 ECMA-404。它用简单易读的语法表示对象、数组、字符串、数字、布尔值和 null。它是网络 API、配置文件以及几乎所有编程语言之间数据交换的默认格式。它没有内置注释、日期或模式,嵌套很深的大文件没有查看器就很难阅读。

压缩方式
–
透明度
–
动画
–
发布年份
2001 · Douglas Crockford
JSON 转换器

CSV

逗号分隔值

CSV 是一种用于表格的纯文本格式,每一行是一条记录,列之间用逗号分隔。它从计算机早期就开始使用,RFC 4180 对其作了说明,不过许多变体使用分号或制表符,文本编码也各不相同。几乎所有电子表格、数据库和分析工具都能导入和导出 CSV,因此它是在系统之间传输数据的默认格式。CSV 只保存数值,不包含公式、格式、多个工作表或数据类型。

压缩方式
–
透明度
–
动画
–
发布年份
–
CSV 转换器

从 API 或应用获取的数据,需要由习惯用电子表格而非代码的人来分析、共享或导入时,人们就会把 JSON 转成 CSV。

JSON转CSV常见问题

什么样的JSON结构能顺利转换为CSV?

适用的是各对象大部分键相同的对象数组,例如 [{"id":1,"name":"Ada"},{"id":2,"name":"Lin"}]。每个对象成为一行,每个键成为一列。最外层是单个对象、记录放在某个属性里的情况也可以处理,前提是这些记录本身是一个列表。

部分记录缺少其他记录中的键怎么办?

表头是所有键的并集,所以只在部分记录中出现的字段也会有自己的一列,没有该字段的记录在该单元格留空。这对 API 数据很正常,因为可选字段通常会直接省略。

true、false和null会写成什么?

CSV 没有数据类型,只有文本。布尔值会写成 true 和 false 这两个单词,数字写成数字,null 则是空单元格。如果导入工具需要用 1 和 0 代替 true 和 false,请在转换后用电子表格替换。

为什么Excel中重音字符显示为乱码?

除非文件开头有字节顺序标记(BOM),否则 Windows 上的 Excel 会按系统区域代码页读取 CSV 文件。因此本页默认写入带 BOM 的 UTF-8。Linux 上的工具或数据管道有时更适合普通 UTF-8,这时请切换文本编码。

JSON数据该转成CSV还是Excel文件?

如果下一步是导入其他系统、加载数据库或交给脚本处理,选 CSV。如果要让人阅读和编辑数据,选工作簿,因为 JSON转Excel 会保留数据类型,并避免 Excel 打开时重新猜测邮政编码之类的列。

能从CSV还原出原始JSON吗?

只能得到扁平化的版本。数组和深层嵌套已被展开成列或文本,数字与字符串的类型也不再被记录,所以反向转换得到的是扁平对象。如果以后需要原始结构,请保留源 JSON。