CSV 转 JSON

CSV 与 JSON 双向互转:自动识别分隔符、表头行、数字类型转换,大整数和 007 不失真,支持打开和下载文件。免费免注册,数据不上传。

  • 双向互转
  • 自动识别分隔符
  • 大整数不失真
  • Excel 不乱码

数据只在你的浏览器中转换,不会上传也不会保存。

🔒 所有计算都在你的浏览器内完成,数据不会上传到任何服务器。

什么时候会用到

  • 把 Excel 数据交给开发:把 Excel 另存的 CSV 转成 JSON,直接用在网页或 API 中。
  • API 结果转报表:把接口返回的 JSON 数组转成 CSV,用 Excel 或 WPS 表格分析。
  • 导入系统前检查:确认字段与分隔符,避免 007、区号 010 这类开头的 0 被吞掉。
  • 直接粘贴表格:从电子表格复制的单元格是 Tab 分隔,粘贴后会自动识别并转换。

使用说明

  1. 选择转换方向(CSV → JSON 或 JSON → CSV),把数据粘贴到“输入”框,或点“打开文件”导入 .csv、.tsv、.json 文件,结果会实时显示在“输出”框。
  2. 按需调整选项:分隔符可自动识别或手动指定;“首行为表头”表示 CSV 第一行是字段名;“自动转换类型”会把数字和 true/false 转成 JSON 的数字和布尔值。
  3. 点“复制”或“下载”获取结果;要用 Excel 打开 CSV 时保留“添加 BOM”,中文才不会乱码。点“交换”可以把输出作为输入,反向转换回去核对。

实际示例

CSV → JSON(勾选首行为表头和自动转换类型):输入表头 id,name,price,active,以及 9007199254740993,Amy,1200.50,true 和 007,Ben,300,false 两行,结果为 2 行 × 4 列。300 转成数字,true 和 false 转成布尔值;而 9007199254740993 超出安全整数范围、007 有前导零、1200.50 末尾有 0,三者都保留为字符串,转回 CSV 时一字不差。

JSON → CSV:输入 [{"name":"Amy","tags":["a","b"]},{"name":"Ben","email":"ben@example.com"}],字段取两条记录的并集 name、tags、email,得到 2 行 × 3 列。Amy 没有 email、Ben 没有 tags,对应单元格留空;tags 数组转成 JSON 字符串,因为含逗号和引号,在 CSV 中写作 "[""a"",""b""]"。

结果怎么看

  • 状态栏的“行 × 列”统计的是数据行,不含表头;CSV 中的空行会跳过,不计入行数。
  • 出现“字段数与表头不符”说明有些行比表头多或少了字段,最常见的原因是内容含逗号却没有用引号括起来。字段不足的行会缺少后面的 key,多出的值放在 __parsed_extra 中。
  • 未勾选“自动转换类型”时,JSON 中所有值都是字符串;勾选后也只转换数字和 true/false,空单元格保持空字符串,日期不会转换。
  • 表头有重名时,第二个起会自动改名,例如两个 a 会变成 a 和 a_1,避免后面的列覆盖前面的值。

原理与计算方法

  • CSV 的解析与输出使用 papaparse,引号规则遵循 RFC 4180:含分隔符、引号或换行的字段用双引号括起来,内容中的双引号写成两个;输出的换行符为 CRLF。
  • 自动识别分隔符时,会在逗号、Tab、竖线、分号中选出各行字段数最一致的一种;只有一列时无法判断,按逗号处理。
  • 类型转换规则:值转成数字再转回文本必须与原文完全相同,而且整数要在 ±(2^53−1) 的安全范围内,才会转成数字。
  • JSON → CSV:对象数组以所有对象 key 的并集(按首次出现顺序)作为列;二维数组逐行直接输出;纯值数组放在 value 列。超出安全范围的整数在解析前先保留原始文本,因此输出不会失真。
  • 打开文件时先按 UTF-8 解码,如果不是合法的 UTF-8 就改用 Big5。

适用限制

  • 只处理扁平表格,嵌套 JSON 不会展开成多列(例如 user.name),而是整个对象转成 JSON 字符串放在一个单元格。
  • 分隔符自动识别依赖各行字段数一致,数据很少或字段数参差不齐时可能识别错误,此时请手动选择分隔符。
  • 文件编码只自动识别 UTF-8 和 Big5,GBK 等编码的文件请先另存为 UTF-8。
  • 全部数据在浏览器内存中处理,几十 MB 以上的文件可能让页面变慢。

常见问题

为什么 007、1.50 没有转成数字?

勾选“自动转换类型”后,只有转成数字再转回文本仍与原文完全相同的值才会转换。007 会变成 7、1.50 会变成 1.5,编号和金额格式就变了,所以保留为字符串,保证再转回 CSV 时内容不变。

用 Excel 打开下载的 CSV 中文乱码怎么办?

勾选“下载 CSV 时添加 BOM”再下载。BOM 是文件开头的隐形标记,Excel 看到它才会按 UTF-8 读取。另外,打开的 CSV 如果不是 UTF-8,本工具会改用 Big5(繁体中文)解码;GBK 编码的文件请先另存为 UTF-8。

JSON 里有嵌套对象或数组,转成 CSV 会怎样?

CSV 是扁平表格,嵌套的对象或数组会整体转成 JSON 字符串放进同一个单元格,例如 ["a","b"]。各条记录字段不同时,取所有字段的并集作为列,缺少的单元格留空。

我的数据会被上传吗?

不会。解析和转换全部在你的浏览器里完成,数据不会发送到服务器,也不会保存在浏览器中,关闭页面就消失。

怎么把 Excel 转成 JSON?

在 Excel 中选择“另存为 → CSV UTF-8”,再用“打开文件”导入;或直接选中单元格复制粘贴,转换方向选“CSV → JSON”即可。

WPS 表格、腾讯文档、Google 表格可以直接用吗?

可以。选中范围复制后直接粘贴(Tab 分隔会自动识别);也可以先导出为 CSV 文件,再用“打开文件”导入。

转出来的 JSON 是什么样子?

勾选“首行为表头”时,每一行会变成一个对象、键名是字段名称,整份是对象数组;取消勾选则每一行变成一个数组。

参考来源