CSV、JSON、XML、YAML 区别:数据格式怎么选
表格数据、接口返回、配置文件看起来都像“文本”,但 CSV、JSON、XML、YAML 用法并不一样。CSV 是扁平表格格式,JSON 是轻量结构化数据格式,XML 是带标签和命名空间的标记格式,YAML 是偏人读友好的配置格式。选错格式会带来乱码、字段丢失、嵌套变形或配置难维护;选对后,再用 JSON 转 CSV、CSV 转 JSON 这类工具做互转就顺很多。
- CSV 适合二维表和批量导入,结构简单、体积小,但不支持嵌套和多 sheet。
- JSON 适合接口、前后端交换和层级数据,字段类型清楚,程序读取方便。
- XML 适合需要强约束、命名空间、文档结构的老系统或行业标准。
- YAML 适合人手写配置,缩进敏感,不建议承载大批量业务数据。
- 从 JSON 转 CSV 会发生扁平化,从 CSV 转 JSON 则要决定表头、类型和空值规则。
四种格式一句话区别
CSV 管表格,JSON 管结构,XML 管标记和规范,YAML 管人写配置。这条规则足以覆盖大多数文件选择问题。
数据格式不是越复杂越好,要看接收方怎么读、数据有没有层级、后续是否需要人工编辑。
CSV:把数据压成一张表
CSV(Comma-Separated Values)是一种纯文本表格格式,每行一条记录,每列用分隔符隔开。它适合导入数据库、给 Excel 打开、做批量交换。缺点也清楚:没有嵌套、没有多 sheet、没有单元格样式。
JSON:把数据保留成对象和数组
JSON(JavaScript Object Notation)用对象、数组、字符串、数字、布尔值和 null 表示结构化数据。接口返回、前后端通信、配置片段都常用 JSON。它比 CSV 更适合表达层级关系,比如订单里有收货人、商品列表和支付信息。
XML:用标签描述结构
XML 用开始标签、结束标签和属性表达文档结构,能配合 schema、命名空间和行业规范。它比 JSON 冗长,但在老系统、办公文档内部结构、政企交换和 SOAP 服务里仍然常见。
YAML:让人更容易写配置
YAML 用缩进表达层级,常见于 GitHub Actions、Docker Compose、Kubernetes 配置等文件。它阅读友好,但缩进、冒号、短横线都可能影响含义,不适合让不熟悉格式的人批量编辑业务数据。
CSV、JSON、XML、YAML 对比表
对比格式时,不要只看“能不能打开”,还要看结构、体积、阅读成本和后续工具是否支持。
| 格式 | 结构能力 | 常见用途 | 主要边界 |
|---|---|---|---|
| CSV | 二维表,行列结构 | Excel、数据库导入、批量名单 | 不保存类型、样式、多 sheet 和嵌套 |
| JSON | 对象、数组、嵌套结构 | API、前后端通信、配置片段 | 给人看表格不直观,深层嵌套转表要扁平化 |
| XML | 标签、属性、命名空间、schema | 行业标准、老系统、文档格式、SOAP | 体积偏大,手写和阅读成本高 |
| YAML | 缩进层级、列表、键值 | CI、部署、运维配置 | 缩进敏感,大批量数据不如 CSV/JSON 稳 |
按可读性看
少量配置给人改,YAML 可读;层级数据给开发看,格式化后的 JSON 可读;大量行列数据给业务同事看,CSV 或 xlsx 更可读。XML 可读但标签较多,适合有明确规范的场合。
按体积看
同一批扁平数据,CSV 往往更省体积,因为表头只写一次;JSON 每行都带字段名,体积会变大;XML 标签较多,体积通常更大。实际压缩后差距会缩小,但源文件的可读和处理成本仍然不同。
实际工作中怎么选
选格式先看接收方:人看表格选 CSV/xlsx,程序接口选 JSON,行业标准选 XML,人写配置选 YAML。
给人看,优先表格
销售名单、库存、订单、考试成绩、银行流水这类数据,通常是行列结构。给同事核对时,CSV 或 xlsx 更直接。CSV 轻巧,xlsx 能保存多个 sheet、列宽和文本类型。中文乱码问题可参考 Excel 转 CSV 中文乱码处理指南。
给程序读,优先 JSON
接口返回、前端状态、事件日志、带嵌套的订单数据,JSON 更自然。它能表达数组和对象,字段类型也更明确。需要临时给业务看时,再用 JSON 转 CSV 拍平成表格。
给配置维护,谨慎用 YAML
YAML 适合短配置,但不适合复制粘贴大量业务数据。少一个空格,含义可能就变了。多人协作时,建议配合校验工具、代码审查或固定模板。
- 批量导入数据库:用 CSV。
- 接口传输订单和用户资料:用 JSON。
- 行业系统要求固定 schema:用 XML。
- CI/CD 或部署配置:用 YAML。
- 给 Excel 打开且要保留长数字:用 xlsx。
- 从接口数据做报表:先 JSON 转 CSV。
互转时哪些信息会变化
格式互转不是简单改后缀。只要目标格式表达能力更弱,就必须决定怎么丢弃、展开或补足信息。
JSON 转 CSV 会扁平化
JSON 里的嵌套对象要变成列名,例如 user.name、user.email。数组字段可以存成 JSON 字符串,也可以按下标展开成 tags.0、tags.1。这一步没有通用答案,要看后续怎么筛选和导入。
CSV 转 JSON 要决定类型
CSV 里的值原本都是文本。转 JSON 时,可以保持全字符串,也可以把数字、布尔值推断成对应类型。建议把订单号、手机号、邮编、证件号保持为字符串;金额、数量、状态布尔值再推断类型。
实测几千行 CSV 和几千条 JSON 对象在浏览器里互转通常是秒级完成,真正影响结果质量的是字段规则。先把“表头、类型、空值、嵌套展开”四件事定清楚,后面的转换会稳定许多。
常见问题
- CSV 和 JSON 有什么区别?
- CSV 是二维表,适合 Excel、数据库导入和简单统计;JSON 支持对象、数组和嵌套结构,适合接口传输和程序读取。把 JSON 转 CSV 时,嵌套字段需要扁平化。
- XML 和 JSON 哪个更适合接口?
- 新项目接口通常选 JSON,因为体积更小、解析方便、前端天然支持。XML 在老系统、SOAP、政企行业标准和需要命名空间时仍然常见。
- YAML 适合保存业务数据吗?
- YAML 更适合人手写配置,例如 CI 配置、部署配置。它对缩进敏感,不适合承载大量行级业务数据;大批量数据建议用 CSV、JSON 或数据库。
- CSV 能表示嵌套数据吗?
- 不能直接表示。CSV 是扁平二维表,嵌套对象要拍平成 user.name 这类列名,数组要拼成字符串或展开成多列。层级很深时,JSON 更合适。
- CSV 转 JSON 会自动识别数字和布尔值吗?
- 可以,但要谨慎。类型推断能把 123、true 变成 number 和 boolean;手机号、邮编、订单号这类带前导 0 或长数字的字段应保留为字符串。
- CSV、JSON、XML、YAML 互转会上传文件吗?
- 小鹿tools 已上线的 JSON/CSV 互转和 JSON 格式化都在浏览器本地完成,文件或文本不会上传服务器。关闭页面后数据即清除。
- 给 Excel 打开应该选 CSV 还是 JSON?
- 给 Excel 或 WPS 打开,优先选 CSV 或 xlsx。JSON 适合程序读,Excel 直接打开 JSON 并不直观;需要表格视图时先用 JSON 转 CSV。
已经知道要转成表格,就用 JSON 转 CSV;要把表格交给程序读,就用 CSV 转 JSON。JSON 本身不合法时,先用 JSON 格式化/校验 找到错误行列。
参考资料
延伸阅读
本文由「小鹿tools」整理,更新于 2026-06。如发现信息过期或有误,欢迎反馈。