跳转到主要内容

将 JSON 转换为 CSV

转换器接收 JSON 对象数组,并为每个对象写出一行 CSV。各条记录的键很少完全一致,因此本指南将说明列是如何确定的,以及空缺处会填入什么。

示例详解

输入 (JSON)
[
  {"id": 1, "name": "Smith, Jane", "tags": ["admin", "ops"]},
  {"id": 2, "name": "Kim", "email": "[email protected]"},
  {"id": 3, "name": "Lee", "email": null}
]
输出 (CSV)
id,name,tags,email
1,"Smith, Jane","admin,ops",
2,Kim,,[email protected]
3,Lee,,

标题行按照每个键首次出现的顺序列出所有键:id、name、tags,然后是第二个对象中的 email。Smith 没有 email,Lee 的 email 为 null,因此这两个单元格都为空。tags 数组被写成 admin,ops,并且因为包含分隔符而加上了引号,与 "Smith, Jane" 的处理方式相同。

转换器的处理规则

  • 输入必须是 JSON 数组,例如 [{...}, {...}];单独的一个对象会被拒绝。
  • 列是所有对象键的并集,按每个键首次出现的顺序排列。
  • 缺失的键或 null 值会生成空单元格。
  • 数字和布尔值以纯文本形式写出,例如 42 和 true。
  • 由普通值组成的数组会将其元素用逗号连接后写出。嵌套对象以及包含对象的数组会以紧凑的 JSON 形式写入单元格,因此不会丢失任何数据;如果需要拆分成单独的列,请先将其展平(例如改为 address_city)。
  • 包含分隔符、引号或换行的值会用双引号包裹,内部的引号会双写。

更多转换指南