博客
简体中文

JSON 转 CSV 在线工具 — 对象数组一键转表格

把 JSON 对象数组转成 CSV(嵌套展开、分隔符、Excel BOM)

在浏览器中处理 · 不上传任何内容

CSV 结果

功能简介

开发中到处都是 JSON 数组,但电子表格更适合用 CSV。这个工具把 [{...}, {...}] 形式的 JSON 转换成带表头的 CSV。修改输入时结果会实时更新,也可以把结果下载成文件。

使用方法

  1. 把对象数组粘贴到输入框。只粘贴一个对象时,会得到一行的表格。
  2. 选择分隔符:逗号、分号、制表符或竖线。某些地区的 Excel 默认使用分号。
  3. 如果要用 Excel 打开,保持 UTF-8 BOM 开启,然后点击“下载 CSV”。
  4. 如果要粘贴到其他程序,改用“复制”按钮。

工作原理

  • 格式遵循 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 看起来是一样的。

我的数据会被上传吗?

不会。转换完全在你的浏览器中进行,不发送也不保存任何内容。

没找到想要的工具?