CSV 转 JSON 指南:表头、分隔符、引号与数据类型处理

更新 2026-08-09 约 13 分钟 数据工具 How-to

Excel 导出了一张“订单号、客户、金额”的表,接口却要求每行一个 JSON 对象;或者接口返回 JSON,你需要交给财务继续在表格里筛选。转换并不是按逗号切几刀这么简单:分隔符、表头、引号、换行和类型都会改变结果。本指南用 WebUtils CSV ⇄ JSON 转换器完成可复核的来回转换,并明确哪些信息无法从二维 CSV 无损恢复。

立即使用相关工具 打开 CSV 与 JSON 转换器
打开工具 →

一句话理解两种格式

CSV 是按行和列排列的平面文本,JSON 是能表达对象、数组和嵌套关系的数据结构。

CSV 适合表格交换和人工查看,JSON 适合接口传输和程序消费。转换器可以把一行 CSV 映射为一个对象,但不会凭空知道“00123”是编号还是数字 123,也无法自动恢复一个单元格中原本被展平的嵌套对象。转换前先决定字段语义,转换后再做校验。

CSV 的隐藏规则

分隔符不总是逗号

本工具支持逗号 ,、分号 ;、制表符 Tab 和竖线 |。不同地区的 Excel 可能因为小数逗号设置而导出分号;复制网页表格常带 Tab。整份文件只能选一种主要分隔符,混用会造成列数漂移。

引号决定逗号是否属于内容

下面一行有三个字段,而不是四个:

id,name,note
1001,张三,"延迟 2 小时,已补发"

逗号出现在双引号内,属于 note 的内容。换行也可以出现在引号包裹的字段中。手工用 split(',') 解析往往会把它拆坏,本工具的逐行解析会处理常见的引号规则,但极端脏数据仍需专业 CSV 库复核。

表头是数据还是字段名

有表头时,第一行 id,name 变成对象键;没有表头时,转换器需要生成或使用默认列名。若误把第一条真实记录当表头,第一条数据就会丢失,且后面每个对象的键都会错位。

JSON 的结构代价

标准 JSON 的对象键必须用双引号,字符串也用双引号;数组用 [],对象用 {}。CSV 中所有单元格本质上都是文本,转为 JSON 时常见策略是:数字看起来像数字就转成数值,空字段变成空字符串或 null,布尔值是否转为 true/false 则取决于转换实现和约定。不要把转换器的推断当成业务类型定义。

二维 CSV 无法天然表示:

  • 一个订单下有多个商品的数组;
  • 客户地址中的国家、省、市层级;
  • 同一字段既有数字又有带单位的文本;
  • 原始列顺序之外的类型、约束、枚举和时区。

如果 JSON 里有嵌套对象,转回 CSV 时只能展平为列名(例如 address.city)或序列化成一个 JSON 字符串。回转后再转回 JSON,结构可能与原始对象不同。

WebUtils 操作流程

  1. 打开 CSV 与 JSON 转换器,先判断左侧输入框放 CSV 还是 JSON。
  2. 粘贴一小段真实结构的样例,不要一上来处理整份百万行数据。先验证列数、引号和编码。
  3. 在分隔符下拉框选择逗号、分号、Tab 或竖线。复制自 Excel 的内容通常先试 Tab;看预览列数是否符合预期。
  4. 根据第一行勾选或取消“包含表头”。有表头时,键名来自第一行;无表头时,确认页面生成的列名策略是否符合你的接口。
  5. 需要阅读 JSON 时勾选“美化 JSON”;机器传输可关闭美化以减少体积。美化只改变空白,不改变数据语义。
  6. 点击“CSV → JSON”,检查每个对象的键、值和行数;不要只看第一行。
  7. 用一条包含逗号、引号、空字段和前导零的记录做边界测试,再复制或下载结果。
  8. 反向转换时,把 JSON 放入 JSON 区,点击“JSON → CSV”,检查嵌套对象、数组和换行字段如何被展平。
  9. 将结果交给 JSON 格式化或校验工具进行语法检查,再进入接口联调。

页面在浏览器本地执行,适合中小型文本。大文件会受到浏览器内存和文本框渲染限制,超过限制应改用命令行、脚本或数据处理平台。

真实输入输出:保留前导零

输入 CSV:

sku,qty,price,note
00123,2,9.90,"促销,第二件半价"
00007,,12.5,""

有表头且选择逗号后,理想的 JSON 结构可能是:

[
  {"sku":"00123","qty":2,"price":9.9,"note":"促销,第二件半价"},
  {"sku":"00007","qty":"","price":12.5,"note":""}
]

这里 sku 应保持字符串,否则 00123 会变成 123,库存系统就无法按原编号匹配。金额 9.90 变成数值后显示为 9.9,若财务要求两位小数,应在业务层使用定点金额或字符串,而不是依赖 JSON 展示格式。

类型与空值:转换后必须人工确认

CSV 内容 可能结果 风险
00123 字符串或数字 123 编号前导零丢失
2026-08-09 字符串 时区与日期类型仍需业务定义
1,234.50 被逗号拆列或保持文本 千分位格式不适合直接当 CSV 分隔符
空字段 ""null 或缺键 下游校验规则可能不同
TRUE 字符串或布尔值 大小写和推断策略不一致
- 字符串 不要自动当作零或空值

建议在数据字典中写明“列名、是否必填、字符串/数字/布尔、空值含义、示例”。转换器负责语法层,数据字典负责业务层。

错误表:为什么结果会错位

现象 原因 处理
所有内容挤在一列 分隔符选错 依次试 Tab、逗号、分号、竖线并观察列数
列数忽多忽少 未处理引号内逗号或换行 确保字段成对使用双引号,重新复制完整记录
第一条记录消失 错勾“包含表头” 检查第一行到底是字段名还是数据
中文显示乱码 原 CSV 是 GBK 等编码 先在编辑器转成 UTF-8,再粘贴
00123 变成 123 自动类型推断 编号列按字符串保存,转换后抽查
JSON 报语法错误 使用单引号、尾逗号或未闭合引号 用 JSON 校验器定位行号,修复后再转
嵌套字段变成 [object Object] CSV 无法直接表示对象 展平列名或先序列化为 JSON 字符串
数组只剩第一项 转换器按标量列处理 约定分隔符并在业务层反序列化,或使用专用脚本
金额小数位丢失 数值格式化去掉尾零 金额用定点整数分或字符串,并在接口层约束
大文件页面卡顿 文本框和浏览器内存限制 分片处理或改用命令行 CSV 库

发现行数不一致时,先统计原 CSV 的逻辑记录数,再统计 JSON 数组长度。含引号换行的记录不能简单按物理行数统计。

真实场景:从 Excel 到接口再回到报表

商品导入。 Excel 导出 Tab 分隔内容,SKU、条码和邮编必须保持字符串。先勾选表头、选 Tab,转换后抽查前导零,再用 JSON 校验器确认每个对象都有必需键。

日志分析。 日志字段中常含逗号和双引号,导出时选择逗号并正确转义。转换成 JSON 后按事件对象筛选,完成分析后只导出必要字段,避免把令牌和原始请求体带入报表。

接口回归测试。 用 CSV 保存几十组参数,再转换为 JSON 数组驱动测试。测试脚本要明确把 "001" 当字符串,把 1 当数字;不能依赖不同运行环境的自动推断。

财务对账。 JSON 的订单明细含数组,回导 CSV 时把商品数组展平为多行,并保留订单号。若强行一行一个订单,数组会被压成字符串,后续筛选和求和都不可靠。

供应商交换。 对方要求分号分隔且 UTF-8 BOM。转换器可验证字段结构,但文件编码、BOM 和换行风格要在最终导出脚本中明确处理。

安全与隐私边界

  • 页面在浏览器中本地转换,不代表数据在电脑上没有痕迹;剪贴板、浏览器缓存、屏幕共享和下载目录仍可能泄露。
  • 生产订单、客户手机号、访问令牌不应粘贴到公共演示或分享链接。先脱敏,完成后清空输入框。
  • CSV 里以 =, +, -, @ 开头的单元格可能在电子表格中触发公式,导出给他人前要做 CSV 注入防护。
  • 转换器不执行 JSON 中的脚本,但下游系统可能把字段当 HTML 或 SQL 使用,必须继续做输出编码和参数化查询。
  • 大文件和高敏数据应在受控环境中用审计过的脚本处理,并保留输入哈希和输出版本。

常见问题

转换器会自动识别分隔符吗?

页面提供逗号、分号、Tab 和竖线选项,最稳妥的做法仍是根据来源选择并观察列数。自动猜测在混合内容或只有一列样本时容易误判。

为什么 CSV 转 JSON 后数字和字符串混在一起?

CSV 本身没有类型,转换器或实现会根据文本外观推断。业务上重要的编号、金额和日期必须在转换后按数据字典确认,必要时统一为字符串或定点数。

JSON 转 CSV 能完全还原原来的 CSV 吗?

不能保证。缩进、对象键顺序、嵌套数组、空值表达、换行风格和编码信息可能丢失。双向转换的目标是交换数据,不是恢复原文件的每个字节。

含逗号的字段一定要加双引号吗?

是。字段内容含分隔符、换行或双引号时,应使用双引号包裹,并把内部双引号写成两个双引号。否则任何兼容解析器都可能把一条记录拆成多列。

如何避免条码前导零消失?

把条码列当字符串处理,在 Excel 导出和 JSON 接口中都写明字符串类型。转换后抽查 0012300007 等样本,不要只看数字列是否能求和。

可以在浏览器里转换几十 MB 的 CSV 吗?

小规模文本通常可以,但文本框渲染和内存会限制体验。超过页面承受范围时,分片或使用经过测试的 CSV 库更可靠,还能记录错误行和编码信息。

收尾清单

转换前写清分隔符、编码和表头;转换后核对行数、键名、前导零、空值和嵌套字段;上线前再做 JSON 语法校验与 CSV 注入检查。这样得到的不是“看起来像 JSON”的文本,而是下游可以解释的数据契约。