在线 CSV/JSON 转换器:表格数据格式互转工具
什么是 CSV 和 JSON
CSV(Comma-Separated Values)是表格文本:第一行通常是表头,其后每行一条记录,字段默认用逗号分隔。
JSON 用对象与数组表达结构,适合 API 与程序处理。本站 CSV/JSON 转换器在浏览器内完成两种格式的双向转换,数据不上传。
对比示例(与本站输出一致)
CSV:
name,email,age
张三,zhang@example.com,28
李四,li@example.com,32
JSON(全部为字符串——本站不做类型推断):
[
{ "name": "张三", "email": "zhang@example.com", "age": "28" },
{ "name": "李四", "email": "li@example.com", "age": "32" }
]
注意:示例里的 age 在 JSON 侧仍是 "28",不是数字 28。需要数字类型时,应在下游按列显式转换。
CSV vs JSON 的特点
| 特性 | CSV | JSON |
|---|---|---|
| 可读性 | 表格直观 | 结构清晰 |
| 嵌套支持 | 不支持(需展平) | 支持对象/数组 |
| 类型信息 | 无(全是文本) | 有(字符串、数字、布尔、null 等) |
| 适用场景 | Excel 导入导出、批量表格 | API、配置、嵌套载荷 |
| Excel | 可直接打开(注意编码与分隔符) | 需先转表格 |
如何使用本站转换器(真实 UI)
打开 CSV/JSON 转换器:
- 左侧粘贴 CSV(含表头)或 JSON 对象数组。
- 点 CSV → JSON 或 JSON → CSV——工具不会自动检测方向,也不会自动嗅探分隔符。
- 选择分隔符:逗号
,、分号;或制表符 Tab(读写共用同一选项)。 - 结果可复制或下载(扩展名按输出是否像 JSON 数组选择)。
快捷键:输入区可使用主操作快捷键触发 CSV→JSON(与页面按钮一致)。
实现注记(与 csvToJson / jsonToCsv 对齐)
以下行为以本站当前实现为准,写进联调清单比背 RFC 更有用。
分隔符
- UI 提供
,/;/ Tab 三种常用方言;csvToJson/jsonToCsv的第二参数与选项同步。 - Excel 在部分地区默认分号——直接选「分号」即可,不必先经 CSV/TSV 转换。
引号与转义(RFC 4180 子集)
- 字段含逗号、双引号或换行时,应用双引号包裹。
- 字段内的双引号写成两个双引号:
"said ""hi"""→said "hi"。 - 引号必须从字段开头开始;字段中间突然出现
"会抛CSV_QUOTE_POSITION_ERROR。 - 未闭合引号 →
CSV_QUOTE_NOT_CLOSED。 - 引号内允许真实换行(一条记录可跨多物理行)。
表头
- 第一行视为表头;键名会
trim空白。 - 仅表头、无数据行 → 得到空数组
[]。 - 空输入 →
[]。
空单元格与列数
- 空单元格保留为 空字符串
"",不会变成 JSONnull。 - 数据行列数必须与表头一致,否则
CSV_FIELD_COUNT_MISMATCH(多一列、少一列都会失败)。 - 全空行会被跳过。
换行与 BOM
- 接受
\n与\r\n(单独的\r会被跳过)。 - 输入整体会先
trim;JavaScript 的trim会去掉首尾的 UTF-8 BOM(U+FEFF),因此 Excel「另存为 CSV UTF-8」带 BOM 时,首列表头一般不会变成不可见的BOM+name。 - 若你在其他工具链里看到第一列名带 BOM,那是该链路没剥 BOM——本站这条路径已剥。
JSON → CSV 额外行为
- 输入必须是 对象数组;元素不是对象会报错。
- 表头取各行键的 并集(出现顺序:先扫到的键在前);某行缺键则对应单元格为空。
null/undefined写成空单元格。- 以
=、+、-、@等开头的单元格会加制表符前缀,减轻 Excel/WPS 公式注入风险(仍按文本呈现)。 - 含
,、"、换行的字段按 RFC 方式加引号并双写内部引号。
大文件边界
- 整段文本驻留内存再解析,适合联调与中小表。
- 数十万行或百兆级文件会拖慢甚至卡顿标签页;应改用流式 CLI(如 csvkit、Python
csv模块)或数据库COPY/LOAD DATA。 - 浏览器侧没有分页流式写出——这是刻意的交互工具边界,不是漏做。
RFC 4180、Excel 方言与现实裂缝
RFC 4180 描述了「逗号 + 双引号 + CRLF」的常见形态,但从未成为全球强制标准:
- 分隔符随 locale:德语等环境 Excel 常用分号;本站固定逗号,需先规范化。
- 引号策略:规范要求「必要时」加引号;有的导出器从不加引号,直到字段含逗号才出问题——问题总出在「重要行」。
- 记录 ≠ 物理行:引号内换行合法;用
split('\n')的脚本行数会对不上。 - BOM:Excel UTF-8 CSV 常带 BOM;剥不剥决定首列 join 是否静默失败。
把 CSV 当成「有方言的文本表格」,比当成「一种 JSON」更不容易翻车。
往返非恒等:CSV → JSON → CSV
即使两端都走本站:
- 类型不会「变聪明」:全程字符串,这反而是可预测的——不会出现
00123→123。 - 键顺序:JSON→CSV 按并集扫描顺序排列表头;若原 CSV 列序与对象键插入序不一致,往返后列序可能变化。
- 空串与
null:CSV 侧没有null;回程不会凭空造出null。 - 嵌套 JSON:本工具 不展平嵌套对象。需要点号展平、自定义分隔符时,用 JSON 转 CSV(该页有展平与分隔符选项)。
纪律:把 CSV 当作 JSON 的有损二维投影;需要保真存储时保留 JSON,或用带 schema 的管道。
与 JSON / SQL / YAML 簇互链
| 下一步 | 工具 | 何时用 |
|---|---|---|
| 嵌套 JSON 展平为宽表 | JSON → CSV | 有 address.city 这类层级 |
| 分号/制表符 CSV | CSV/TSV | Excel 方言或 TSV |
| 灌开发库演示数据 | CSV → SQL | 生成 INSERT(标识符用反引号) |
| 整理 SQL 排版 | SQL 格式化 | INSERT 生成后再 diff |
| 配置形态互转 | YAML ↔ JSON | K8s/CI 与 API JSON 之间 |
| 校验 JSON 结构 | JSON Schema | 转换后约束字段 |
相关博文:JSON/CSV 转换指南、CSV 转 SQL、YAML/JSON 转换。
常见失败对照
| 现象 | 常见原因 | 处理 |
|---|---|---|
CSV_FIELD_COUNT_MISMATCH | 某行多/少逗号,或未给含逗号字段加引号 | 检查该行引号;或先转 TSV |
CSV_QUOTE_NOT_CLOSED | 奇数个未配对 " | 补全引号或去掉多余引号 |
| 中文乱码 | 源文件是 GBK,按 UTF-8 粘贴 | 先转 UTF-8 再贴 |
| 列全并到一列 | 实际是分号分隔 | 用 CSV/TSV 工具改成逗号 |
| Excel 打开公式异常 | 单元格以 = 开头 | 本站 JSON→CSV 已加防护前缀;手工 CSV 需自行处理 |
FAQ
CSV 里的逗号怎么办?
字段用双引号包裹:"上海, 浦东"。或改用 TSV,经 CSV/TSV 转换 再进本工具。
为什么数字还是字符串?
本站 CSV→JSON 刻意不做类型推断,避免单号、邮编、前导零被吃掉。需要数字时在应用层按列 Number(...) 或入库时 CAST。
和 JSON→CSV 工具有什么区别?
大文件能转吗?
交互级可以;百兆以上请用本地脚本或数据库装载。浏览器双倍内存(源字符串 + 对象图)是硬顶。
本文出自 ToolVault 工具匣。相关工具:CSV/JSON、JSON→CSV、CSV→SQL、YAML↔JSON。更多见首页。
相关工具
相关文章
在线 CSV 转 SQL 工具:将表格数据导入数据库
CSV 转 INSERT:空单元格→NULL、MySQL 反引号或 PostgreSQL 双引号、BOM 剥离、Markdown 竖线转义,以及与 COPY/LOAD 的分工。
HTML 表格转 JSON 怎么保留行列结构?
把网页里的 HTML 表格转成 JSON,怎么保留表头、处理合并单元格、保持嵌套结构?逐步方法并附本站 HTML 表格转 JSON 工具。
Excel 转 JSON 后日期变成数字 / 中文乱码,怎么办?
把 Excel 转成 JSON 时日期变 44927 这种数字、中文乱码、空单元格丢失怎么办?讲清 Excel 日期序列号与编码坑,并附本站 Excel 转 JSON 工具。