使用方法
- 粘贴 CSV 文本、打开 .csv 或 .tsv 文件,或点击“试用示例”。
- 保留“自动检测”,或自行选择分隔符,并指定第一行是否包含列名。
- 可选开启数字、布尔值和 null 检测,并选择输出为对象或数组。
- 复制 JSON,或将其下载为 .json 文件。
工作原理
解析器遵循 CSV 规范 RFC 4180:字段可以用双引号括起来;带引号的字段中可以包含分隔符和换行符;带引号字段中的两个连续双引号表示一个双引号字符。换行符可以是 CRLF(Windows)、LF(macOS、Linux)或 CR,末尾的换行符不会产生空记录。完全空白的行会被跳过。文件开头的字节顺序标记(Excel 常会写入)会被移除。如果带引号的字段没有闭合,解析器会报告其起始行号,因为如果靠猜测处理,文件剩余部分可能会被错误地合并到同一个单元格中。
自动检测会检查前几行中的逗号、分号、制表符和竖线,并选择能让列数保持一致的分隔符。如果有表头行,每条记录都会转换为以列名为键的对象;空列名会变为 column_1、column_2……,重复的列名会添加后缀,例如 id_2。字段数少于表头的行会补上空值;多出的字段会使用额外的列名。
默认情况下,所有值都保留为字符串,这是更安全的选择:像 01234 这样的邮政编码、电话号码和 ID 都会保留开头的零。开启类型检测后,完全符合 JSON 数字格式的值会转换为数字(但 007、1,5 和大于 2^53 的整数除外);不区分大小写的 true 和 false 会转换为布尔值;null 或空单元格会转换为 null。日期会保留为文本。
示例
电子表格导出文件
id,name,price\n1,Desk,149.90 会转换为 [{"id":"1","name":"Desk","price":"149.90"}]。开启类型检测后,会转换为 {"id":1,"name":"Desk","price":149.9}。
欧洲版 Excel 文件
在德国使用 Excel 保存的文件会使用分号:Name;Preis\nTisch;149,90。自动检测会选择分号,而 149,90 会保留为字符串 "149,90",因为它不是 JSON 数字。
包含换行符的单元格
写作 "221B Baker Street London" 的地址单元格(带引号并跨两行)会保留为一个值 "221B Baker Street\nLondon",而不会被解析为新行。
常见问题
为什么 JSON 中的数字是字符串?
CSV 不包含数据类型,因此默认会将每个值按原样保留为文本。开启“检测数字、true/false 和 null”后,外观类似数字的值会转换为数字。为避免更改数据,开头的零和小数逗号都会保留为文本。
如果某行的列数多于或少于表头怎么办?
缺失值会变为空字符串(开启类型检测后会变为 null)。多出的值会保留在名为 column_N 的额外键下,不会丢失任何数据。
可以读取 Excel .xlsx 文件吗?
不可以,只支持基于文本的 CSV 和 TSV。在 Excel 或 Google Sheets 中,先使用“文件 › 另存为 / 下载 › CSV”,然后在这里打开该文件。
可以转换多大的文件?
在台式电脑上,几 MB 的文件可以瞬间完成转换。文件大小上限取决于设备内存,因为整个文件和 JSON 结果都会保存在浏览器标签页中。
隐私
CSV 仅在浏览器中读取和转换。打开的文件不会上传,也不会存储或发送到分析服务。