CSV 与 JSON 互转:实用转换指南
CSV 和 JSON 是数据处理中最常见的两种格式。CSV 简单直观,是电子表格的好伙伴;JSON 结构灵活,是 Web 开发的首选。在实际工作中,经常需要在这两种格式之间转换——从 API 导出数据到电子表格,或把 Excel 数据导入 Web 应用。这篇指南将帮助你理解两种格式的特点,并掌握正确的转换方法。
CSV 和 JSON 的核心区别
CSV:表格数据的轻量格式
CSV(逗号分隔值)用纯文本表示表格数据。每行是一条记录,字段之间用逗号分隔。第一行通常是表头。
姓名,年龄,城市
张三,28,北京
李四,32,上海
CSV 的优点是简单、通用——几乎所有电子表格软件和数据库都支持导入导出 CSV。缺点是它本质上是扁平的,无法自然表达嵌套结构。
JSON:结构化数据的灵活格式
JSON 用键值对和数组组织数据,天然支持嵌套和层级关系。
[
{"姓名": "张三", "年龄": 28, "城市": "北京"},
{"姓名": "李四", "年龄": 32, "城市": "上海"}
]
JSON 的优点是结构化程度高,支持嵌套对象和数组,是 REST API 的标准数据格式。缺点是冗余较多——每个字段名都要重复,文件体积通常比 CSV 大。
何时使用哪种格式
| 场景 | 推荐格式 | 原因 |
|---|---|---|
| 电子表格编辑 | CSV | Excel、Google Sheets 原生支持 |
| API 响应 | JSON | 结构化、支持嵌套 |
| 数据备份 | CSV | 体积小、通用性强 |
| 配置文件 | JSON | 支持层级和注释扩展 |
| 日志分析 | CSV | 便于 grep 和命令行处理 |
| 前后端通信 | JSON | JavaScript 原生支持 |
常见转换挑战
CSV 和 JSON 之间的转换看似简单,实则暗藏不少陷阱。
转义字符问题
CSV 中,如果字段本身包含逗号、换行符或双引号,必须用双引号包裹字段,且字段内的双引号要写成两个双引号。转换时如果处理不当,会导致字段错位。例如:
描述
"他说:""你好"""
嵌套结构处理
JSON 支持嵌套对象和数组,但 CSV 是扁平的。将嵌套 JSON 转为 CSV 时,需要决定如何展平结构——是用点号连接键名(如 address.city),还是只保留顶层字段。反过来,将 CSV 转为 JSON 时,需要决定是否将某些列组合为嵌套对象。
编码问题
CSV 文件经常遇到编码问题。Excel 在中文环境下默认使用 GBK 编码保存 CSV,而 Web 应用通常期望 UTF-8。编码不匹配会导致中文乱码。转换时务必确认源文件的编码格式。
数据类型丢失
CSV 中一切都是文本。数字 123 和字符串 "123" 在 CSV 中没有区别。转为 JSON 时,需要根据上下文判断字段应该是数字、布尔值还是字符串。自动转换工具可能将邮编 00123 错误地转为数字 123,丢失前导零。
空值处理
CSV 中的空字段可能是空字符串 "",也可能是完全为空。在 JSON 中,这应该表示为空字符串 "" 还是 null?这取决于业务逻辑,转换时需要明确约定。
如何正确转换
CSV 转 JSON
- 确认 CSV 的分隔符(逗号、制表符或分号)
- 确认文件编码为 UTF-8
- 将第一行识别为键名
- 处理引号包裹的字段和转义字符
- 根据内容推断数据类型(数字、布尔值、null)
- 生成 JSON 数组,每个对象对应一行数据
JSON 转 CSV
- 确认 JSON 是对象数组格式
- 收集所有对象的所有键名作为列头
- 处理嵌套结构——展平或忽略
- 对包含特殊字符的字段添加引号
- 统一空值的表示方式
使用 TextKit 的 CSV/JSON 转换工具
TextKit 提供免费的 CSV 转 JSON 工具,让转换变得简单:
- 将 CSV 或 JSON 数据粘贴到输入区域
- 工具自动识别输入格式
- 即时完成转换,显示结果
- 支持自定义分隔符和嵌套处理选项
- 一键复制转换结果
所有处理都在浏览器中完成,你的数据不会上传到任何服务器。
转换的最佳实践
- 先验证再转换:确保源数据格式正确,避免在错误数据上浪费时间。
- 保留原始文件:转换后与原始数据对比抽样检查,确认没有数据丢失。
- 统一编码:始终使用 UTF-8 编码,避免中文乱码。
- 注意数字精度:大数字(如身份证号)在 JSON 中可能丢失精度,考虑用字符串表示。
- 处理空值一致:在转换前明确空值的表示约定。
需要转换 CSV 和 JSON?试试 TextKit 免费的 CSV 转 JSON 工具——粘贴数据,一键转换,安全高效。