数据 · 阅读约 2 分钟 ·
JSON 转 CSV,一个字段都不丢
嵌套键、可选字段、字符串里的逗号:4Dev 如何把杂乱的 JSON 展平成可直接用于电子表格的 CSV。

电子表格是平的,JSON 不是。每次把 JSON 转成 CSV,都要决定如何处理嵌套对象、数组,以及只在部分记录中出现的键。下面就是 4Dev 转换器的具体做法。
每个键都有自己的一列
表头由所有对象的键组成,按首次出现的顺序排列,而不只是取第一条记录。缺少某个键的记录会得到一个空单元格,因此列不会错位,可选字段也不会丢失。
[{"id":1,"name":"Ada"},
{"id":2,"name":"Alan","note":"optional"}]
id,name,note
1,Ada,
2,Alan,optional
嵌套对象变成带下划线的列
对象会通过下划线连接键名来展平,所以 {"address":{"city":"Lisbon"}} 会变成名为 address_city 的列。简单值组成的数组放进同一个单元格("admin, dev"),对象数组则以 JSON 文本保存在单元格中,什么都不会被丢掉。
逗号和引号自动转义
任何包含逗号、双引号或换行的值都会用双引号括起来,内部的引号会被双写。这是 Excel 和 Google 表格所期望的标准 CSV 规则。
2,"Alan, T.","says ""hi"""