开发者工具

CSV 转 JSON

将带表头行的 CSV 转换为整洁的 JSON 对象数组。

给这个工具评分

如何使用 CSV 转 JSON

  1. 粘贴顶部带有表头行的 CSV。
  2. 每一行会根据表头转换成一个 JSON 对象。
  3. 复制格式化后的 JSON 输出。

关于 CSV 转 JSON

CSV 看起来很简单,实际上并不简单。CSV 并没有统一的标准——RFC 4180 是最接近通用参考的规范,但不少软件对它的部分规则视而不见。包含逗号的字段必须用双引号包裹;带引号字段内部的引号需要通过加倍来转义;而且带引号的字段还可能包含换行符,这正是为什么按换行符直接拆分 CSV 是一个随时可能爆发的隐患。这个工具使用真正的逐字符解析器,所以这三种情况都能被正确处理,Windows 的 CRLF 换行符也会被统一规范化。

第一行会被当作表头,提供键名;之后的每一行都会转换成格式化 JSON 数组中的一个对象。空白行会被跳过。每个值都会保持为字符串类型——不做任何类型猜测——这是刻意为之的设计:这样可以防止带前导零的 ID、电话号码和邮编在不知不觉中被误转换成数字而破坏格式。

坦白说说它的局限。分隔符固定为逗号,所以以分号或制表符分隔的导出文件需要先转换。它不会剥离 BOM,所以 Excel 保存的 UTF-8 字节顺序标记会粘连在第一个键名上。字段数多于表头的行会丢失多出的部分;字段数少于表头的行会补上空字符串;重复的表头会相互覆盖。它完全在你的浏览器本地运行,所以客户数据导出文件不会被上传。反方向转换请使用 JSON 转 CSV;想压缩结果,可使用 JSON 压缩工具

常见问题

第一行必须是表头吗?

是的。第一行始终提供对象的键名,其后每一行都会转换成一个对象。如果你的文件没有表头行,请先自己添加一行——否则你的第一条记录会被当作键名消耗掉。

它能处理字段内部的逗号和换行符吗?

可以,只要该字段用双引号包裹。解析器会逐字符跟踪引号状态,所以带引号字段内部的逗号、换行符和成对的双引号("")都会被完整保留,而不会导致行被错误拆分。

为什么我的数字在输出中变成了字符串?

这是刻意设计的。猜测类型会破坏真实数据——带前导零的 ID 会丢失前导零,长数字会丢失精度,像 1-2 这样的值或日期也可能被误读。所有内容都保持为字符串;你需要在自己的代码中对确实需要的字段做类型转换。

它能处理分号或制表符分隔的文件吗?

不能。分隔符固定为逗号,没有例外。如果你的导出文件使用分号——在 Excel 使用欧洲区域设置时很常见——请重新导出为逗号分隔格式,或在粘贴前先替换分隔符。

为什么我的第一个键名前面有奇怪的字符?

那是 UTF-8 字节顺序标记(BOM),Excel 会在文件开头写入它。这里不会将其剥离,所以它会成为第一个表头名称的一部分。粘贴前请删除那个看不见的开头字符,或者以不带 BOM 的方式保存文件。