什么是 CSV 转 JSON 转换?
CSV(逗号分隔值,RFC 4180)是扁平的表格化文本格式;JSON(JavaScript Object Notation,RFC 8259)是用于结构化数据的树形文本格式。将 CSV 转换为 JSON 可把电子表格友好的表格变为 API 友好的对象数组 — 每行对应一个对象,表头行提供键名 — 无需重新录入任何单元格。
CSV 转 JSON 转换是如何工作的?
每次转换都在你的浏览器中本地运行。高层步骤如下:
- 你将 CSV 粘贴到输入区域并按下转换;工具解析文本并在输出区域生成 JSON 对象数组。
- 一个逐字符的状态机(FIELD_START → IN_UNQUOTED_FIELD 或 IN_QUOTED_FIELD)扫描输入,遵循
""双引号转义,识别\r\n与\n两种行终止符,并把结果先生成为一个二维字符串数组作为中间表示。 - 如果第一行被标记为表头,其单元格成为对象键名;否则工具生成合成键名
field0、field1、… 使每行仍能映射到完整对象。 - 分隔符(逗号、分号、制表符、竖线或自动识别)以及类型推断(数字 / 布尔值 /
null)均可配置。开启推断时,30变为数字 30,true变为布尔值;关闭时每个单元格保持字符串。 - 输出会以
JSON.stringify格式写入只读文本框,下载链接基于带 MIME 类型application/json;charset=utf-8的Blob构建,便于一键保存。
为什么使用此工具将 CSV 转换为 JSON?
- 隐私:每一次解析和转换都在你的浏览器中完成。数据从不进入我们的服务器。
- 正确性:CSV 解析器是真正的状态机。包含带引号逗号(
"Bob, Jr.")、嵌入换行符和转义引号的字段会被解析为一个单元格,而非三个 — 朴素的split(',')实现在这里都会出错。 - 类型保真:可选的类型推断将数字和布尔单元格转换为真正的 JSON 数字和布尔值,让得到的数组可直接使用,无需二次清理。
- 灵活性:为非逗号 CSV 方言选择任意分隔符,选择首行是否作为表头,并可针对每个单元格必须保持为字符串的场景关闭类型推断。
CSV 转 JSON 转换的常见应用场景有哪些?
在数据处理与工具链中,CSV 解析为 JSON 随处可见:
- API 模拟:粘贴一份从电子表格导出的 CSV 夹具,再把它转换为 JSON 数组,本地服务器即可作为模拟接口返回。
- 数据导入:把电子表格导出(联系人、库存、问卷结果)转换为 JSON 数组,应用或脚本无需 CSV 解析器依赖即可迭代处理。
- 配置编辑:让非技术评审者在电子表格中逐单元格编辑设置或功能开关,再将保存的 CSV 转换为应用实际加载的 JSON。
CSV 转 JSON 的示例是什么样的?
在第一行粘贴 name,age,第二行 Alice,30,第三行 "Bob, Jr.",25,然后以逗号分隔符、首行作为键名、开启类型推断按下转换,得到 [{"name":"Alice","age":30},{"name":"Bob, Jr.","age":25}] — "Bob, Jr." 中带引号的逗号保留在一个字段内,年龄变为真正的 JSON 数字。
这个 CSV 转 JSON 转换器是完全在我的浏览器中运行的吗?
是的。每次解析和转换都作为 JavaScript 在你的浏览器标签页中本地运行。本工具完全不调用 fetch、XMLHttpRequest 或 navigator.sendBeacon — 你的 CSV 内容从不进入我们的服务器、第三方转换器或任何分析管道。页面加载后也可以离线使用,因为它只是一个没有运行时 API 依赖的静态 HTML/CSS/JS 包。
本转换器可处理的最大输入大小是多少?
转换器会在内存中缓冲整个输入并在主线程同步执行,因此实际上限取决于设备性能。在现代笔记本上,约 10 MB 的 CSV(大约 10 万条典型记录)可以在没有明显停顿的情况下完成转换。超出这一规模 UI 可能会卡顿。基于 Web Worker 与分块解析的流式转换已列入后续计划 — 目前请在粘贴前先拆分超大数据集。
CSV 转 JSON 解析器如何处理带引号的逗号和嵌入换行符?
解析器是一个带有三个状态(FIELD_START、IN_UNQUOTED_FIELD、IN_QUOTED_FIELD)的逐字符状态机 — 而非朴素的 split(',')。被双引号包裹的字段可以包含分隔符、CR、LF,或一个以 "" 转义的字面双引号,这些都不会破坏字段边界。所以 "Bob, Jr.",25 会被解析为两个字段而非三个;跨行的多行描述也会被解析为一个单元格。
数字、布尔值和空单元格在 JSON 输出中是如何定型的?
定型由 类型推断 开关控制。推断开启(默认)时,看起来像数字的单元格变为 JSON 数字,true/false 变为布尔值,字面量 null 变为 JSON null;其余保持字符串。推断关闭时,每个值都保持字符串,不论内容 — 当前导零、电话号码或标识符代码必须完整保留时十分有用。短行中缺少的末尾单元格以空字符串输出,确保每个对象都有完整的键集。
CSV 这一侧支持哪些分隔符?
明确支持四种分隔符:逗号(,,RFC 4180 默认)、分号(;,欧洲地区常见)、制表符(\t,TSV 方言)以及竖线(|)。你还可以选择 自动识别,它会统计输入前 4 KB 中每个候选分隔符在引号之外出现的次数,挑选最频繁且能让前五行得到一致列数的那一个。
这个 CSV 转 JSON 转换器以真正的状态机进行解析,输出干净、即用的 JSON,可直接粘贴到 API 调用、脚本或代码评审中 — 全程不上传任何字节。