CSV 转 JSON 转换器
将 CSV(或 TSV)粘贴到左侧,得到对象数组形式的 JSON。表头自动识别,数字和布尔值自动转换类型。在浏览器中运行 — 无需上传。
- 将 CSV 粘贴到左侧文本区。
- 点击「转换为 JSON」。第一行被视为表头。
- 复制 JSON 数组,或下载为 data.json。
- TSV(制表符分隔)和其他分隔符由 PapaParse 自动检测。
它能做什么?
将 CSV(类 RFC 4180)解析为 JSON 数组,每个对象的键对应表头列。引号字段、嵌入逗号、双引号转义、CRLF/LF 行尾都能正确处理。数字、布尔值和类 null 值(「true」「false」、空)自动类型化。分隔符自动检测 — 粘贴 TSV、分号或竖线分隔的数据也都可用。
示例
CSV 输入:
name,age,role
Ada,36,engineer
Grace,40,scientist JSON 输出:
[
{"name": "Ada", "age": 36, "role": "engineer"},
{"name": "Grace", "age": 40, "role": "scientist"}
] 常见 CSV 陷阱及处理方法
CSV 看似简单,但边界情况比想象多。以下是会产生意外输出的常见模式。
- 未加引号的嵌入逗号。 形如 `Smith, John`(无外引号)的字段会被拆成两列。请用双引号包裹: `"Smith, John"`。
- 字段内的双引号。 在引号字段内,字面量 `"` 通过双写转义: `"He said ""hi"""` 解码为 `He said "hi"`。反斜杠转义(`\"`)是非标准的,不被支持。
- 列数不一致。 列数少于表头的行,缺失的键设为 null;多于表头的会以解析警告报告。转换会完成,但请检查输出。
- 丢失前导零的数字 ID。 `007` 解析为数字 7,而非字符串 "007"。如果前导零有意义(邮编、电话号码),请先加引号包裹 — 引号字段在下游代码中关闭动态类型即可保留为字符串。
- 文件开头的 BOM。 Excel 保存的 CSV 经常包含 UTF-8 BOM(`\uFEFF`)。解析器会自动剥离,但若你从十六进制编辑器粘贴原始字节,可能在第一个表头看到多余字符。
- 混合行尾。 CRLF(Windows)、LF(Unix)、CR(旧 Mac)都能识别。若输出像一行巨大记录,可能是文件根本没有换行 — 通常发生在不带 `\n` 拼接生成的 CSV。
常见问题
支持制表符分隔值(TSV)吗?
支持。PapaParse 从输入前 1 KB 自动检测分隔符。Tab、分号、竖线、逗号无需配置即可使用。若检测错误(在真实数据上少见),请让字段更清晰或先做预处理。
我的 CSV 没有表头行怎么办?
当前配置假定第一行是表头。无表头时请在前面加一个合成行如 `a,b,c`,或在命令行用 `header: false` 调用 PapaParse 获得二维数组输出。
日期是如何处理的?
保留为字符串。解析器只对数字和布尔值自动类型化 — 故意不解析日期,因为格式歧义(`01/02/03` 在美国是 1 月 2 日,在英国是 2 月 1 日)猜测风险太大。请在了解来源约定的下游代码里解析。
可以转换非常大的 CSV 吗?
约 50 MB 后浏览器会变慢。瓶颈是文本框而非解析器 — 更大的文件请在命令行运行 PapaParse,使用同一个库。
我的 CSV 会被上传吗?
不会。所有处理都在浏览器中进行 — 数据由本页 JavaScript 解析,从不发送到任何服务器。可在开发者工具网络面板验证: 点击「转换」时不会触发任何请求。
如何获得不同形状的 JSON(嵌套、分组)?
本工具产生扁平的对象数组 — 这是 CSV 所能表达的形态。要获得嵌套结构,请用脚本对输出做后处理(按列分组、用前缀转换字段名等)。试图在 CSV 里编码层级通常带来更多麻烦。