FormatArc CSV 转 Markdown 转换结果。JSON、YAML、CSV、Markdown 互转的入口FormatArc CSV 转 Markdown 转换结果。JSON、YAML、CSV、Markdown 互转的入口
作者: FormatArc 编辑部发布日期: 2026-09-02更新日期: 2026-09-02

JSON、YAML、CSV、Markdown 数据格式比较速查表——按用途快速选择

JSON、YAML、CSV、Markdown 都是「用文本表达结构化数据」的格式,但它们各自解决的核心问题完全不同。配置文件里用 CSV,层级结构就没法表达;API 响应用 YAML,语法不够严格;把表格数据塞进 JSON,每行都重复键名,体积膨胀。Markdown 写给人看的文档很强,但当成机器可读的数据源就会在后面埋坑。

这篇文章是一张速查表,帮你在开项目或设计数据管道时快速判断「该用哪个格式」。从快速决策矩阵开始,依次是功能对比、注释支持、解析器生态、按用途的选择矩阵、常见踩坑、LLM 场景下的选择、以及规格信息。

快速决策矩阵——该选哪个格式

拿不准的时候先看这张表。列出常见用途和推荐格式。

用途推荐格式原因
REST API 请求/响应JSON语法严格,所有语言的标配解析器
Kubernetes / GitHub Actions / Docker ComposeYAML支持注释、锚点,人写起来顺手
应用配置文件YAML(或 TOML / JSON5)需要写注释
表格数据存储和 Excel 往返CSV电子表格软件直接打开
结构化日志输出JSON Lines一行一条记录,和 grep、jq 配合好
GitHub README、技术博客正文MarkdownGitHub、知乎、CSDN 等平台都支持渲染
给 ChatGPT、Claude 的上下文Markdowntoken 效率高
静态站文章 frontmatter + 正文YAML + Markdownfrontmatter 放元数据,正文写文档
表格式数据展示给人看Markdown 表格纯文本状态下也能直观渲染
大批量数值/表格数据批处理CSV + DataFramepandas、Polars 读取速度快

一句话总结:机器之间传数据用 JSON,人手动编辑的配置用 YAML,二维表格用 CSV,人读的文档用 Markdown。其余的细枝末节在下面各节里调整。

先在浏览器里把四种格式转一遍

光看说明不如把同一份数据用四种格式写出来对比。FormatArc 的所有转换工具都在浏览器内运行,输入的数据不会发送到外部服务器。内部数据或 API 响应可以直接粘贴进去试。

  • JSON 格式化工具——JSON 格式化、校验、语法错误定位
  • YAML 转 JSON / JSON 转 YAML——YAML 和 JSON 互转
  • CSV 转 JSON / JSON 转 CSV——表格数据和结构化 JSON 互转
  • CSV 转 Markdown——电子表格转 Markdown 表格
  • Markdown 转 HTML / HTML 转 Markdown——文档格式互转

对把敏感数据粘到上传型在线工具心里没底的话,可以先打码再试。粘贴敏感数据前的 5 项验证 值得先看。FormatArc 不上传、不存储,数据只在浏览器内存里存在。

本文覆盖的四种格式和未覆盖的格式

本文聚焦 JSON、YAML、CSV、Markdown 这四种。它们是 Web 开发、配置文件、数据交换、技术文档四个场景中出现频率最高的组合,也是 FormatArc 浏览器内能互转的范围。

以下格式不在本文范围内:

  • XML——规格校验能力强,但语法冗长,新项目里采用率在下降。SOAP、RSS、SVG、Office Open XML 等存量系统对接时才会碰到
  • TOML——Rust 的 Cargo、Python 的 pyproject.toml 等场景用的配置格式。和 YAML、JSON5 功能重叠,Web 前端领域出现频率低
  • Parquet——列式二进制格式,面向大数据分析。不属于文本格式对比的范畴
  • XLSX / ODS——电子表格二进制格式。本文只通过 CSV 导出/导入路径提及

如果你需要包含 XML 或 TOML 的五格式对比,网上有不少现成文章。本文的定位是把 Markdown 当一等公民的四种格式比较,贴合 2026 年写 API、配置、README、LLM prompt 的日常场景。

同一份数据用四种格式写出来

两个用户的信息(姓名、年龄、技能列表),用四种格式分别表示。同一份信息在不同格式下的结构差异一目了然。

JSON 版本

{
  "users": [
    { "name": "Alice", "age": 30, "skills": ["Python", "Go"] },
    { "name": "Bob",   "age": 25, "skills": ["JavaScript"] }
  ]
}

YAML 版本

users:
  - name: Alice
    age: 30
    skills:
      - Python
      - Go
  - name: Bob
    age: 25
    skills:
      - JavaScript

CSV 版本

CSV 没法直接表达嵌套结构,所以 skills 数组必须扁平化。常见做法有三种:用分隔符(如 ;)拼在一个单元格、展开成多列、拆成独立的表。最简单的分隔符拼接方式如下:

name,age,skills
Alice,30,Python;Go
Bob,25,JavaScript

Markdown 版本

Markdown 是文档格式而非数据交换格式,结构化表格依赖 GFM(GitHub Flavored Markdown)的表格语法。

| name  | age | skills      |
|-------|-----|-------------|
| Alice | 30  | Python, Go  |
| Bob   | 25  | JavaScript  |

同一份信息,四种形态。JSON 严格、机器友好;YAML 人读着舒服;CSV 擅长二维表格但搞不定嵌套;Markdown 渲染出来好看但别当数据源用。

四种格式的功能对比矩阵

各格式能表达什么、不能表达什么,整理成下表。

功能JSONYAMLCSVMarkdown
层级结构(嵌套)支持(对象、数组)支持(缩进)不支持(只有扁平二维)有限(嵌套列表、引用)
数组支持支持有限(只有行)有限(列表)
数字、布尔、null 类型支持支持(注意隐式类型转换)不支持(默认全是字符串)不支持
注释不支持支持(#不支持(靠非正式惯例)支持(<!-- -->
字符串转义严格(\"\n复杂(多种写法)实现差异大(引号翻倍等)基本不需要
二进制数据安全不支持(需 Base64)不支持(同左)不支持(同左)不支持
流式读取有限(用 JSON Lines)有限好(按行流式)不支持
规格成熟度RFC 8259(2017)YAML 1.2.2(2021)RFC 4180(2005)CommonMark 0.31(2024)+ GFM
人手写难度中等(要检查括号、逗号)简单场景低
机器解析难度很低中(实现有差异)高(解析出 AST)
表格数据表达力一般(键重复)一般强(用表格语法时)
单文件建议大小几 MB 级别几 MB几 GB 也能处理几百 KB

JSON 和 YAML 共享同一套数据模型(对象 + 数组 + 基本类型),所以互转非常直接。FormatArc 提供了双向转换工具,YAML 和 JSON 之间随时可以切换。YAML 和 JSON 的区别 整理了语法差异、解析器实测和选型指南。

注释支持对比

选配置文件格式时,能不能写注释是核心考量。标准规格和衍生扩展之间有差异,整理如下。

格式注释支持语法备注
标准 JSON(RFC 8259)不支持写注释会报 SyntaxError
JSONC支持///* */VS Code 的 settings.json 用的非标准扩展
JSON5支持///* */还允许尾逗号、单引号
YAML支持#标准规格,行首行末都行
CSV(RFC 4180)不支持部分解析器会忽略 # 开头的行(本地惯例)
Markdown(CommonMark)支持<!-- -->HTML 注释语法
TOML支持#和 YAML 一样用 #

标准 JSON 不支持注释,所以配置里必须留注释的话,选 YAML、JSONC、JSON5,或者用 _comment 之类的假键来凑。JSON 注释语法与 4 种替代方案 里有更详细的说明。

各语言解析器生态对比

实际开发中,「标准库能不能直接读」「要不要装第三方库」影响很大。主要语言的现状如下。

语言JSONYAMLCSVMarkdown
Node.js / JavaScriptJSON.parse 内置yamljs-yamlpapaparsecsv-parsemarkedremark
Pythonjson 内置PyYAMLruamel.yamlcsv 内置、pandaspolarsmarkdownmistune
Goencoding/json 内置gopkg.in/yaml.v3encoding/csv 内置goldmark
Rustserde_jsonserde_yamlyaml-rust2csv cratepulldown-cmark
JavaJackson、GsonSnakeYAMLOpenCSV、Apache Commons CSVflexmark、commonmark-java
浏览器(纯 JS)JSON.parse 内置js-yaml(需打包)papaparsemarkedmarkdown-it

JSON 和 CSV 在几乎所有主流语言里都有标准库支持。YAML 和 Markdown 需要第三方库,但各语言的事实标准库已经很稳定。FormatArc 把 Node.js 生态的 yamlpapaparsemarkedturndownremark 打包进浏览器,实现无服务器的独立转换环境。

按用途的格式选择矩阵

比起抽象的对比表,按具体场景查表更快。

场景首选替代应避免
REST API 请求/响应JSONMessagePack、ProtobufYAML、CSV、Markdown
GraphQL 查询结果JSON同上
OpenAPI / AsyncAPI 规范YAML(或 JSON)CSV、Markdown
Kubernetes 清单YAMLJSONCSV、Markdown
GitHub Actions / CI 配置YAML同上
Docker Compose 配置文件YAML同上
应用配置文件YAML / TOML / JSON5CSV、Markdown
环境变量文件(.env.env / TOMLYAML(行内注释误解析风险)
结构化日志存储JSON LinesYAML、CSV、Markdown
指标数据批量导出CSVParquetYAML、Markdown
Excel / 飞书表格 / Google Sheets 数据交换CSV / XLSXYAML、Markdown
数据库批量导入/导出CSVJSON LinesYAML、Markdown
静态站文章 frontmatterYAMLTOML / JSONCSV
技术博客 / GitHub README 正文MarkdownreStructuredTextJSON、YAML、CSV
需求文档、规格说明Markdown同上
Slack / 钉钉 / Discord 富文本Markdown(方言)同上
给 ChatGPT、Claude 的上下文Markdown纯文本HTML
LLM 结构化输出(Function Calling)JSONYAML(隐式类型转换)、Markdown
AI Agent 工具 Schema 定义JSONYAMLCSV、Markdown
Markdown 表格的数据源管理CSV 转生成手敲 Markdown 表格
README 里插入表格Markdown 表格(GFM)CSV、HTML

Markdown 表格手敲很麻烦,建议把 CSV 或 JSON 当数据源,用 FormatArc 的 CSV 转 Markdown 功能生成表格,方便后续维护。

常见的错误选择

项目里反复出现的格式选择踩坑。

用 CSV 硬塞嵌套数据

{ "user": { "address": { "city": "北京" } } } 这种层级结构塞进 CSV,你得另外定义一套扁平化规则,读数据的时候还要写一套还原逻辑。需要层级的话,一开始就选 JSON 或 YAML;或者拆成多张 CSV 表,用关系模型关联。

YAML 隐式类型转换的坑(挪威问题)

YAML 1.1 规格里,noyesonoff 这些字符串会被自动转成布尔值。由此引发了著名的「挪威问题」:国家代码 NO 被解析成 false。YAML 1.2 改进了部分规则,但很多解析器仍兼容 1.1 模式,所以可能被误判为布尔值的字符串,一律加引号最安全。

country: "NO"   # 安全——明确是字符串
country:  NO    # 危险——YAML 1.1 兼容解析器可能转成 false

在标准 JSON 里写注释

因为 VS Code 的 settings.json 支持注释,很多人以为标准 JSON 也能写。实际上那是 JSONC,非标准方言。标准 JSON(RFC 8259)里写注释,JSON.parse 会直接报 Unexpected token 错误。需要注释的场景,选 JSON5、JSONC 或 YAML,或者拆成单独的文件。

低估 CSV 的方言差异

RFC 4180 是参考标准,但实际工程里的 CSV 方言遍地都是。分隔符(, / \t / ;)、换行符(LF / CRLF)、引号处理、BOM(字节顺序标记)、字符编码(UTF-8 / GBK / GB18030)、有没有表头、单元格内换行怎么转义——每一项在不同解析器里行为都可能不同。「不就是个 CSV 吗」这种心态坑过的时间比 YAML 还多。上线前用样本数据把两端的解析行为都验证一遍。

把 Markdown 当机器可读的数据源

Markdown 本质是文档格式,不是设计来让机器稳定提取数据的。Markdown 表格在不同渲染器里的行为有差异,单元格里包含管道符(|)或换行时,非 GFM 渲染器直接解析失败。机器间传数据用 JSON 或 CSV,别用 Markdown。

以为 Markdown 表格是 CommonMark 标准

不是。表格语法是 GFM(GitHub Flavored Markdown)的扩展,不在 CommonMark 标准里。严格遵循 CommonMark 的渲染器会把你的表格当成普通段落渲染。GitHub、GitLab、知乎、CSDN 都支持 GFM,但内部 Wiki 或自研博客引擎不一定开了 GFM 扩展,上线前确认一下。CommonMark 与 GFM 的区别 里对比了 6 种解析器的实际渲染行为。

LLM 场景下的格式选择

给 ChatGPT、Claude、Gemini 喂上下文数据时,首选 Markdown。和 HTML 相比,去掉了冗余的标签和属性,token 消耗低,表格、列表、代码块的抽取精度也更高。LLM 输入用 Markdown 还是 HTML 有实测对比数据。

但 LLM 的结构化输出(Function Calling、JSON Mode)必须用 JSON。所以实际工程里形成了「输入用 Markdown,输出用 JSON」的不对称结构。

YAML 作为 LLM 输入输出格式有风险:缩进在 token 化过程中容易变形,加上隐式类型转换可能把字符串变成布尔值。做 LLM 输入输出格式时避开 YAML。

规格与标准历史

需要确认决策依据时查这张表。

格式正式标准初版最新规格MIME 类型主要扩展名
JSONRFC 8259 / ECMA-4042006(RFC 4627)2017(RFC 8259)application/json.json
YAMLYAML 1.2.22004(YAML 1.0)2021(YAML 1.2.2)application/yaml.yaml.yml
CSVRFC 41801970 年代(惯例使用)2005(RFC 4180)text/csv.csv
MarkdownCommonMark 0.312004(John Gruber 原始定义)2024(CommonMark 0.31)text/markdown.md.markdown
GFMGitHub Flavored Markdown2017 规格化持续更新text/markdown.md

JSON 和 CSV 的 RFC 规格很稳定。YAML 和 Markdown 则有方言分化的问题(YAML 1.1 vs 1.2;CommonMark vs GFM vs MultiMarkdown vs Pandoc),对接时要确认对方的解析器支持哪种方言。

用 FormatArc 做格式互转

四种格式之间常见的转换路径如下。FormatArc 所有工具都在浏览器内运行,数据不发送到服务器。

转换路径工具典型用途
JSON 格式化、校验JSON 格式化工具API 响应可读化、语法错误定位
YAML 转 JSONYAML to JSON配置文件转 API 请求体、CI 里结构化处理
JSON 转 YAMLJSON to YAMLAPI 响应转配置文件
CSV 转 JSONCSV to JSON电子表格数据结构化后送 API
JSON 转 CSVJSON to CSVAPI 响应导出到 Excel 或飞书表格
CSV 转 Markdown 表格CSV to Markdown电子表格转 README 或文章里的表格
Markdown 转 HTMLMarkdown to HTML粘贴到需要 HTML 的 CMS
HTML 转 MarkdownHTML to Markdown网页内容清理、准备 LLM 上下文

组合起来可以实现这样的工作流:「API 响应的 JSON 转 YAML 存为配置文件」「Excel 表格导出 CSV 再转 Markdown 表格贴进 README」「网页 HTML 转 Markdown 喂给 ChatGPT」——全部在浏览器标签页内完成,数据不出本地。

总结

拿不准时的最终检查清单:

  • 机器间数据交换、API 通信:JSON
  • 人手动编辑的配置文件:YAML
  • 大批量二维数值/表格数据:CSV
  • 人阅读的格式化文档:Markdown
  • LLM 输入:Markdown;LLM 结构化输出:JSON

数据格式没有绝对的「正确」选项,只有「你最看重什么」的取舍。可读性、严格程度、解析器覆盖范围、注释支持、LLM token 效率——每个维度上四种格式各有擅长。把上面的矩阵当作一个判断参照,开新项目时用来定格式。

规格参考: