CSV 转 JSON 怎么做:字段映射、类型处理与常见错误

CSV 转 JSON 的难点集中在字段映射、类型推断和特殊字符处理三方面。本文说明 CSV 与 JSON 的结构差异,列出转换前需确认的分隔符、引号、表头和编码细节,给出字段映射的分步操作,并整理数字、布尔值、null、日期等类型处理要点及常见错误与问答。

· · 4 分钟 · 268 浏览 · 11 个小节
目录
  1. CSV 与 JSON 的本质差异
  2. 转换前必须确认的 CSV 细节
  3. 分隔符
  4. 引号规则
  5. 表头
  6. 编码与 BOM
  7. 字段映射的操作步骤
  8. 类型处理的要点
  9. 大数据量与复杂格式的处理方式
  10. 常见错误
  11. 常见问题

CSV 转 JSON 的核心难点不在转换本身,而在字段映射、类型推断和特殊字符处理。只要先把这三件事确定下来,再用脚本或专业工具执行,批量转换可以在几分钟内完成,不需要依赖在线工具。

CSV 与 JSON 的本质差异

CSV 是一种扁平的行列结构,用分隔符(通常是逗号)隔开字段,每行一条记录。JSON 是嵌套的键值对结构,支持对象、数组、字符串、数字、布尔值和 null。

两者最关键的差异在于:

  • CSV 的所有值都是文本,没有类型概念;JSON 区分字符串、数字、布尔值和 null。
  • CSV 靠位置对应列,JSON 靠键名对应值。
  • CSV 不支持嵌套,JSON 可以多层嵌套。

因此转换过程实际上包含两个动作:结构映射(列名转键名)和类型转换(文本转数字、布尔值等)。

转换前必须确认的 CSV 细节

拿到一个 CSV 文件,不要急着丢进工具。先确认以下内容,否则转换结果很可能不可用。

分隔符

CSV 并不一定用逗号。常见的有逗号、分号、Tab(制表符)。如果分隔符判断错误,整行会被当成一个字段。

判断方法:打开文件看第一行,数一数哪个符号出现的次数与预期列数一致。

引号规则

字段中如果本身包含分隔符、引号或换行符,通常会用双引号把整个字段包起来。字段内部的双引号则通过重复一次来转义(即 "" 表示一个 ")。

如果解析器没有正确处理引号,带逗号的地址、带换行的备注就会把一条记录拆成多条。

表头

有的 CSV 第一行是列名,有的没有。没有表头时,你需要自己定义键名,否则 JSON 里只能生成 field1field2 这样的占位键。

编码与 BOM

UTF-8 文件有时会带 BOM(字节顺序标记),表现为文件开头多出几个不可见字节。很多解析器会把 BOM 当成第一个字段名的一部分,导致第一个键名异常。处理方式是读取时显式指定编码,或先去除 BOM。

字段映射的操作步骤

字段映射就是把 CSV 的列对应到 JSON 的键。按以下步骤进行:

  1. 读取 CSV 第一行,列出所有列名。
  2. 为每一列确定目标 JSON 键名。列名含空格、中文或特殊符号时,建议改成规范的英文键名。
  3. 确定每一列的目标类型:字符串、整数、浮点数、布尔值还是 null。
  4. 对布尔值列,明确哪些文本表示真、哪些表示假(如 true/false1/0yes/no)。
  5. 对日期时间列,确定统一的目标格式,避免同一字段出现多种写法。
  6. 对可能为空的列,决定空字符串是转成空字符串、null 还是直接省略该键。
  7. 写一份映射配置,把「源列名 → 目标键名 → 目标类型」固定下来,后续每次转换复用。

映射配置一旦确定,就不要每次手工调整,否则同一批数据两次转换结果会不一致。

类型处理的要点

类型处理是转换中最容易出错的部分。

  • 数字:CSV 里的数字是文本。转 JSON 数字时要确认没有千分位分隔符、货币符号或单位。带前导零的编号(如订单号、电话号码)应当保留为字符串,否则前导零会丢失。
  • 布尔值:JSON 的布尔值只有 truefalse,不接受 True1。需要在映射阶段统一转换。
  • null:CSV 里没有 null 的概念,空单元格需要明确映射为 null 还是空字符串。
  • 日期时间:JSON 没有日期类型,日期通常存为字符串。要统一格式,避免混用多种写法。
  • 嵌套结构:如果目标 JSON 需要嵌套,需要在映射配置里额外定义层级关系,CSV 本身不提供这个信息。

大数据量与复杂格式的处理方式

在线转换工具通常有文件大小限制,且不适合处理含大量特殊字符的数据。数据量大或格式复杂时,建议:

  • 使用命令行工具或脚本语言处理,可控制编码、分隔符、引号规则和类型映射。
  • 使用支持大文件和可视化字段配置的桌面软件,配置一次后可重复使用。
  • 分块读取和写入,避免一次性把整个文件加载进内存。

常见错误

  • 分隔符判断错误,导致整行变成一个字段。
  • 未处理字段内的引号和换行,记录被错误拆分。
  • 未处理 BOM,第一个键名异常。
  • 数字字段丢失前导零。
  • 布尔值或空值映射不统一,同一字段出现多种表示。
  • 生成的 JSON 存在多余逗号或缺失括号,导致整体无法解析。
  • 转换前未备份原始 CSV,出错后无法回溯。

常见问题

CSV 里的逗号在字段内部怎么办?

该字段应当用双引号包起来。解析器识别引号后,会把引号内的逗号当作普通字符,而不是分隔符。

为什么转换后数字变成了字符串?

因为 CSV 里所有值都是文本,转换工具默认按字符串输出。需要在映射配置里显式指定该列为数字类型。

为什么第一个键名看起来不对?

很可能是文件带 BOM。读取时指定 UTF-8 编码或先去除 BOM 即可。

空单元格应该转成什么?

取决于下游用途。需要区分「没有值」和「值为空字符串」时转成 null,否则转成空字符串。关键是整批数据保持一致。

数据量很大,能用在线工具吗?

不建议。在线工具通常有大小限制,且难以控制编码和类型映射。大数据量应使用脚本或桌面工具本地处理。

更多文章
268 浏览 ·

更多在线工具等你发现

免费使用文字处理、PDF 工具、AI 写作等实用功能