§

粘贴你想转换为 JSON 的 CSV。

分隔符
首行作为表头
类型推断
§

Output

json

在国内数据工程场景里,CSV 转 JSON 每天都在发生:国家统计局通过国家数据平台 data.stats.gov.cn 发布的统计公报与年鉴微数据多以 CSV 形式批量下载,再被管道转写成 JSON 灌入 Snowflake 或 MaxCompute;中国证监会与上交所、深交所的公告数据接口和披露文件以 CSV 形态导出后,常被风控团队改写为 JSON 喂入 Kafka 流;央行人民币汇率中间价、Shibor 时序数据同样以 CSV 形式发布。GB/T 11643 公民身份号码规范、PIPL 合规要求都倾向于在本地完成字段映射与转换。本工具在浏览器中完成转换,敏感财务、医疗或人口普查数据始终不离开本机。

什么是 CSV 转 JSON 转换?

CSV(逗号分隔值,RFC 4180)是扁平的表格化文本格式;JSON(JavaScript Object Notation,RFC 8259)是用于结构化数据的树形文本格式。将 CSV 转换为 JSON 可把电子表格友好的表格变为 API 友好的对象数组 — 每行对应一个对象,表头行提供键名 — 无需重新录入任何单元格。

CSV 转 JSON 转换是如何工作的?

每次转换都在你的浏览器中本地运行。高层步骤如下:

  1. 你将 CSV 粘贴到输入区域并按下转换;工具解析文本并在输出区域生成 JSON 对象数组。
  2. 一个逐字符的状态机(FIELD_START → IN_UNQUOTED_FIELD 或 IN_QUOTED_FIELD)扫描输入,遵循 "" 双引号转义,识别 \r\n\n 两种行终止符,并把结果先生成为一个二维字符串数组作为中间表示。
  3. 如果第一行被标记为表头,其单元格成为对象键名;否则工具生成合成键名 field0field1、… 使每行仍能映射到完整对象。
  4. 分隔符(逗号、分号、制表符、竖线或自动识别)以及类型推断(数字 / 布尔值 / null)均可配置。开启推断时,30 变为数字 30,true 变为布尔值;关闭时每个单元格保持字符串。
  5. 输出会以 JSON.stringify 格式写入只读文本框,下载链接基于带 MIME 类型 application/json;charset=utf-8Blob 构建,便于一键保存。

为什么使用此工具将 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 在你的浏览器标签页中本地运行。本工具完全不调用 fetchXMLHttpRequestnavigator.sendBeacon — 你的 CSV 内容从不进入我们的服务器、第三方转换器或任何分析管道。页面加载后也可以离线使用,因为它只是一个没有运行时 API 依赖的静态 HTML/CSS/JS 包。

本转换器可处理的最大输入大小是多少?

转换器会在内存中缓冲整个输入并在主线程同步执行,因此实际上限取决于设备性能。在现代笔记本上,约 10 MB 的 CSV(大约 10 万条典型记录)可以在没有明显停顿的情况下完成转换。超出这一规模 UI 可能会卡顿。基于 Web Worker 与分块解析的流式转换已列入后续计划 — 目前请在粘贴前先拆分超大数据集。

CSV 转 JSON 解析器如何处理带引号的逗号和嵌入换行符?

解析器是一个带有三个状态(FIELD_STARTIN_UNQUOTED_FIELDIN_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 调用、脚本或代码评审中 — 全程不上传任何字节。