JSON 转 CSV 在线工具 — 对象数组一键转表格
把 JSON 对象数组转成 CSV(嵌套展开、分隔符、Excel BOM)
在浏览器中处理 · 不上传任何内容
功能简介
开发中到处都是 JSON 数组,但电子表格更适合用 CSV。这个工具把 [{...}, {...}] 形式的 JSON 转换成带表头的 CSV。修改输入时结果会实时更新,也可以把结果下载成文件。
使用方法
- 把对象数组粘贴到输入框。只粘贴一个对象时,会得到一行的表格。
- 选择分隔符:逗号、分号、制表符或竖线。某些地区的 Excel 默认使用分号。
- 如果要用 Excel 打开,保持 UTF-8 BOM 开启,然后点击“下载 CSV”。
- 如果要粘贴到其他程序,改用“复制”按钮。
工作原理
-
格式遵循 RFC 4180。包含分隔符、双引号或换行的值会用双引号包起来,值内部的双引号写成两个。行尾使用 CRLF。
-
第一行是表头。列从所有行中收集,按每个键首次出现的顺序排列。
-
嵌套对象用点号展开(
a.b.c)。数组和空对象以 JSON 字符串的形式放进一个单元格,例如["a","b"]。如果键名本身就含有点,转回时无法区分。 -
null变成空单元格,布尔值为true或false,数字采用 JavaScript 自身的写法。超过 9007199254740991 的整数在读取 JSON 时就会被舍入,因此会显示警告。 -
数组元素不是对象(数字、字符串等)时,会生成一个名为
value的列。 -
文件编码为 UTF-8,BOM 只加在下载的文件里。
-
往返转换的注意事项:
null会变成空单元格,在 CSV 中无法与空字符串区分。CSV 也没有类型,转回时如果开启类型转换,"123"这样的数字字符串会变成数字123。 -
Excel 公式注入:以
=、+、-或@开头的单元格,在 Excel 中打开时可能被当作公式执行。处理来源不可信的数据时,可以开启在这类值前加 ’ 的选项:单元格会按文本显示(从 CSV 打开时,单元格里仍能看到这个撇号),而-12.5这样的普通负数仍是数字。该选项默认关闭,除非你主动开启,否则不会改写你的值。
示例
输入:
[{"name":"张三","address":{"city":"Beijing"},"tags":["a","b"]},{"name":"Bob"}]
结果:
name,address.city,tags
张三,Beijing,"[""a"",""b""]"
Bob,,
常见问题
用 Excel 打开 CSV 时中文是乱码,怎么办?
没有 BOM 的 UTF-8 CSV 常被 Excel 当作系统默认的旧编码(简体中文 Windows 上是 GBK)读取,中文、日文、韩文和带重音的字母就会乱码。保持“添加 UTF-8 BOM”开启并用“下载 CSV”保存,文件开头会带上 EF BB BF 这三个字节,Excel 就会按 UTF-8 读取。“复制”按钮复制的内容不带 BOM。
嵌套的 JSON 怎么变成表格?
对象里的对象会变成用点连接的列名,例如 address.city。数组会作为 JSON 字符串放进一个单元格。各行的键不一致时,列按首次出现的顺序合并,缺少的单元格留空。
CSV 还能再转回 JSON 吗?
用 CSV 转 JSON 工具,打开数字转换和嵌套还原,就能得到和原始数据非常接近的结果。不过 CSV 不带类型信息,字符串 "123" 和数字 123 看起来是一样的。
我的数据会被上传吗?
不会。转换完全在你的浏览器中进行,不发送也不保存任何内容。