CSV 转 JSON 的核心操作,是把以逗号分隔的表格文件按行解析、按列映射成键值对,再序列化为 JSON 文本。你需要先确认表头行是否作为字段名、字段类型是否需要转换、编码是否为 UTF-8,然后选择手动代码转换或现成工具完成。转换完成后,程序就能直接读取这些结构化数据,不再依赖人工复制粘贴。
为什么需要把 CSV 转成 JSON
CSV 是一种以纯文本存储表格数据的格式,每一行是一条记录,列与列之间用分隔符隔开。它适合用表格软件打开和编辑,但对程序来说不够友好:程序读取 CSV 后,拿到的只是一个二维的字符串数组,必须再根据位置去猜测每一列的含义。
JSON 则用键值对描述数据,每个字段都有明确的名字。程序读取 JSON 后可以直接通过字段名取值,不需要记住“第几列是什么”。把 CSV 转成 JSON,本质上是给表格数据加上字段名和结构,让数据从“人看的表格”变成“程序读的结构”。
这一步做得好不好,直接影响后续的数据导入、接口对接和版本更新。表格里的数据如果一直停留在本地文件,每次更新都要靠人工重新分发和核对,容易出现字段错位、库存不同步、版本混乱等问题。转成 JSON 之后,数据可以被程序直接消费,减少中间环节。
CSV 与 JSON 的格式差异
理解两者的差异,有助于你判断转换时哪些地方容易出错。
CSV 的特点:
- 以行为记录,以列为字段,第一行通常是表头
- 所有值本质上都是字符串,数字和日期需要程序自行解析
- 用分隔符(通常是逗号)区分列,用换行区分行
- 字段中如果包含分隔符、引号或换行,需要用引号包裹并转义
JSON 的特点:
- 以对象数组表示多行记录,每个对象是一行
- 值有类型区分:字符串、数字、布尔值、null、数组、对象
- 键名必须用双引号包裹
- 不支持注释,也不允许末尾多余的逗号
转换时最常遇到的差异点包括:表头是否作为键名、空值如何处理、数字是否要转成数值类型、含逗号的字段是否正确转义、编码是否为 UTF-8。这些点如果没有处理好,转换后的 JSON 可能在程序里解析失败或数据错位。
分步操作:把 CSV 转成 JSON
以下步骤适用于手动编写脚本或使用转换工具的通用流程。
第一步:检查并清理 CSV 文件
打开 CSV 文件,确认第一行是表头,且每个表头名称唯一、不含空格或特殊符号。如果表头有重复或为空,先在表格软件里改好。检查是否有合并单元格、多行表头或批注行,这些结构在标准 CSV 中无法直接表达,需要先拆成单行表头。
确认分隔符是逗号还是其他符号。有些系统导出的文件用分号或制表符分隔,直接按逗号解析会出错。
第二步:确认编码和换行符
用文本编辑器打开文件,确认编码为 UTF-8。如果文件包含中文且编码不是 UTF-8,转换后可能出现乱码。换行符在 Windows 和 Unix 系统下可能不同,多数解析库能自动处理,但手动处理时需要留意。
第三步:选择转换方式
手动脚本转换适合需要控制字段类型和嵌套结构的场景。以常见脚本语言为例,读取 CSV 后逐行构造对象,把表头作为键名,把每列的值作为对应的值,最后把对象数组序列化为 JSON。
使用现成工具转换适合结构简单的表格。把 CSV 内容粘贴或上传到转换工具,选择表头行,工具会输出对应的 JSON。使用工具时要注意:工具是否把数字识别为数值类型、空值是否保留为 null、含逗号的字段是否被正确解析。
第四步:处理字段类型
CSV 中所有值都是字符串,转成 JSON 时需要决定哪些字段转成数字、布尔值或 null。价格、库存、数量这类字段通常转成数值;是否上架这类字段可以转成布尔值;空单元格可以保留为空字符串或转为 null,具体取决于程序端的约定。
如果程序端对类型敏感,类型不一致可能导致解析错误或比较失败。转换前先和程序端确认每个字段期望的类型。
第五步:校验转换结果
转换完成后,检查 JSON 是否符合以下条件:
- 整体是数组,每个元素是一个对象
- 每个对象的键名与表头一致
- 值的类型符合预期
- 没有多余的逗号或缺失的引号
- 中文没有乱码
可以用 JSON 校验工具检查语法是否正确。如果程序端有接口,可以把转换结果先导入测试环境验证。
常见错误与注意事项
字段中包含分隔符时没有转义,会导致一列被拆成多列。CSV 规范中,含分隔符、引号或换行的字段需要用双引号包裹,字段内的双引号用两个双引号表示。
表头重复或为空,会导致 JSON 对象的键名冲突或缺失。转换前确保每个表头唯一且有明确含义。
数字被当成字符串,程序端做数值比较或计算时可能出错。如果程序端期望数值类型,转换时需要显式转换。
空值处理不一致,有的转成空字符串,有的转成 null,程序端需要统一判断。转换前约定好空值的表示方式。
编码不是 UTF-8,中文可能变成乱码。转换前统一转为 UTF-8。
一次性转换大量数据时,注意内存占用。数据量很大时,可以分批读取和写入,而不是一次性加载全部内容。
常见问题
CSV 转 JSON 后中文乱码怎么办?
检查原文件编码是否为 UTF-8。如果不是,先用文本编辑器或命令行工具转为 UTF-8,再重新转换。转换工具本身也应支持 UTF-8 输入输出。
表头有重复或空值怎么处理?
转换前在表格软件里修改表头,确保每个表头唯一且有明确名称。重复的表头会导致 JSON 键名冲突,后出现的值可能覆盖前面的值。
字段里本身有逗号怎么办?
按 CSV 规范,含逗号的字段需要用双引号包裹。检查原文件是否正确转义,转换工具或解析库通常能处理标准转义,但格式不规范的文件需要先修正。
数字和布尔值需要手动转换吗?
取决于程序端的要求。CSV 中所有值都是字符串,如果程序端期望数值或布尔类型,需要在转换时显式转换,否则程序端可能按字符串处理。
数据量很大时怎么转换?
可以分批读取 CSV 并分批写入 JSON,避免一次性加载全部数据占用过多内存。也可以先转换少量数据验证格式,确认无误后再处理全量数据。