博客
简体中文

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

把 CSV 转成 JSON(自动识别分隔符、表头、类型转换、嵌套还原)

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

功能简介

要把表格从电子表格或数据库里导出来,通常用 CSV,而 Web 代码大多需要 JSON。这个工具把粘贴的 CSV 转换成 JSON。默认输出以表头为键的对象数组,没有表头时输出二维数组。

使用方法

  1. 把整个 CSV 粘贴到输入框,或用“打开 CSV 文件”读取文件(UTF-8、UTF-16 文件以及韩文版 Excel 保存的 EUC-KR 文件可以直接打开)。
  2. 分隔符保持“自动识别”或手动选择。如果第一行就是数据,请关闭表头选项。
  3. 想把数字和 true/false 输出为 JSON 类型时,开启类型转换。
  4. 开启嵌套还原后,address.city 这样的列会还原成 {"address":{"city":...}}。处理由 JSON 转 CSV 工具生成的 CSV 时很方便。
  5. 选择缩进方式,复制结果。

工作原理

  • 解析遵循 RFC 4180。双引号内的分隔符和换行属于值的一部分,两个连续双引号读作一个。完全空白的行会被跳过。

  • 类型转换只作用于小写的 true、false,以及 -12、3.5、1e3 这样的普通十进制写法。007、+1、1e999 和超过 9007199254740991 的整数保留为字符串。空单元格是空字符串。

  • 重复的表头名会变成 name、name_2、name_3,不会有列丢失。

  • 嵌套还原会把带点的表头叠成对象,并把以 [ 或 { 开头且是合法 JSON 的单元格展开成数组和对象。如果带点的键和已有的值冲突,就保留为原样的键名。

  • 输入开头的 UTF-8 BOM 会被去掉。

  • 往返转换的注意事项:空单元格变成空字符串而不是 null;开启类型转换后,"123" 这样的数字字符串会变成数字 123。因此 JSON → CSV → JSON 不一定能完全还原原始数据。

示例

输入:

name,age,address.city
张三,30,Beijing

开启类型转换和嵌套还原后的结果:

[{"name": "张三", "age": 30, "address": {"city": "Beijing"}}]

常见问题

需要自己选择分隔符吗?

默认会根据前几行的样子,从逗号、分号、制表符和竖线中自动识别。如果某个值里包含大量其他分隔符导致识别错误,可以手动指定。识别出的分隔符会显示在结果上方。

为什么数字变成了字符串?

默认所有值都保留为字符串。开启“将数字和 true/false 转换为 JSON 类型”即可转换。即便如此,007 这种带前导零的值、+1,以及超过 2^53 的整数仍会保留为字符串,以免丢失信息。

用中文版 Excel 保存的 CSV 能正确读取吗?

请用“打开 CSV 文件”读取。文件有 UTF-8 或 UTF-16 的字节顺序标记(BOM)时按它判断编码;否则先按 UTF-8 读取,失败后依次尝试 EUC-KR(CP949,韩文版 Excel 的默认编码)和 Windows-1252(西欧版 Excel),页面会显示实际使用的编码。GBK/GB2312 编码不受支持,简体中文 Excel 默认保存的“CSV(逗号分隔)”是 GBK,请在 Excel 中另存为“CSV UTF-8(逗号分隔)”后再打开。从其他程序复制时已经变成乱码的文本,粘贴进来也无法修复。

字段数不对的行会怎样?

仍会转换,工具会把这些行号列在“需要检查的行”中。缺少的单元格在结果中不出现对应的键,多出来的单元格会被丢弃。

没找到想要的工具?