程序员科普:JSON、XML、YAML 三种数据格式的由来、应用与对比

摘要

在前后端开发、配置管理、API 通信等领域,我们常常接触到三种主流的数据格式:JSON、XML 和 YAML。虽然它们的目标都是「让数据结构易于存储和传输」,但随着时代发展与技术演进,它们逐渐走上了不同的道路。本文将从历史演变、应用场景出发,结合语法特征,帮你快速理解这三种格式各自的定位与优劣。

YAML ain’t markup language
ain’t markup language 度过xml的应该对markup lang都有些畏惧
所以,从这个名字就强调了YAML文件阅读友好,语义简洁的特点。

我为什么单独抽时间写一篇关于基础文件格式的科普文?

我认为,对于开发者而言,经验取决于你见过多少文件,写过多少代码,开发过多少项目。 从某个更具象的方面来说,则是你对一个文件格式的理解有多深。

比方说,当开发/阅读一个Verilog项目,你除了知道源文件的文件格式是.v, 你还知道你当前工作的文件,逻辑上遵循什么结构而不只是verilog语法本身,而这就体现工程师软件设计的功底。
再比方说, 一个C项目,你看到Makefile,就能想到它的作用. 你拿到一个.xml,你有自己的阅读习惯.

Mark up Language

简单问题快答

  1. 这个概念哪儿来的?

Web1.0 为排版而生。说到排版,想到:LaTex, HTML,…..
实现上,浏览器底层代码对标记语言文件按语法规则解析。

  1. 标记语言长什么样?
  • 再怎么说,和源代码文件一样,他是一个文本文件. 只不过和纯粹的.txt相比,有规范的语法.
  • 可以简单的认为,含尖括号语法的就是标记语言。代表:
    • HTML( Hpyer Text Markup Language )
    • XML ( eXtensible Markup Language )

瞎编的两个故事

1.标记语言和HTML,XML的那段历史

最早的互联网全是静态网页。就是大片的文字放到网上供人们浏览。而没有交互性。
标记语言也是在这个行情下诞生的,通过标记的方式,让浏览器渲染出:有排版(居中、左对齐、….)、各种花哨字体、加粗和颜色、在特定位置呈现文字等功能的文字。
标记语言什么语法不重要,重点是,浏览器的底层有一个parser为用户呈现完美渲染后的网页

  1. 聊聊Markdown
  • 从标记语言的功能上看,Markdown算是标记语言,而且Markdown file 兼容HTML语法,
  • 从名字上认为Markdown是一种标记语言,也不矛盾。英文上 mark-up 就是用尖括号标签来表注。 mark-down只不过是用更简洁的符号来实现文本排版、文字强调等功能。至于名字的由来,估计是作者调皮了一下。
  • markdown作者:约翰格鲁伯,perl解析器. (好,上面也说了markdown is a popular markup language….

一、趣味知识:起源与发展

格式 出现时间 主要背景与用途
XML 1998 为了解决 HTML 无法表示结构化数据的问题,适合数据存档、文档结构描述。
JSON 2001 JavaScript 中的轻量数据交换格式,随着 AJAX 崛起而成为 Web 首选。
YAML 2004 Yet Another Markup Language,语法更清晰,主要用于配置文件和 DevOps 场景。
  1. XML:曾经的霸主
    XML最初是为了扩展 HTML 的表达能力,使得数据能像文档一样有结构、有语义。由于它高度结构化、支持复杂嵌套、具备数据验证机制(如 DTD/XSD),曾一度在 SOAP 协议、早期 Web 服务和企业系统中广泛使用。

  2. JSON:现代 Web 的基石
    随着 JavaScript 和 AJAX 的流行,JSON(JavaScript Object Notation)凭借轻量、直观、易解析的优势迅速取代 XML,成为前后端通信的标准格式,尤其适用于API数据传输

  3. YAML:简洁的配置王者
    YAML 诞生之初就是为了人类友好,语法极简、可读性极强,因此非常适合写配置文件。你可以在 Docker、Kubernetes、GitHub Actions 等 DevOps 工具中频繁看到它的身影。

二、语法要点

文件后缀名

注释

  1. XML
  2. json无注释
  3. YAML 使用#

json特点:

整体用一个大括号包住,Python键值对。 键用string "",值可以是:string, list [] dictionary

serialization


程序员科普:JSON、XML、YAML 三种数据格式的由来、应用与对比
https://optimushimself.github.io/2025/05/19/dance-with-yaml/
作者
Tyrone Opting
发布于
2025年5月19日
许可协议