程序员科普: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
简单问题快答
- 这个概念哪儿来的?
Web1.0 为排版而生。说到排版,想到:LaTex, HTML,…..
实现上,浏览器底层代码对标记语言文件按语法规则解析。
- 标记语言长什么样?
- 再怎么说,和源代码文件一样,他是一个文本文件. 只不过和纯粹的.txt相比,有规范的语法.
- 可以简单的认为,含尖括号语法的就是标记语言。代表:
- HTML( Hpyer Text Markup Language )
- XML ( eXtensible Markup Language )
瞎编的两个故事
1.标记语言和HTML,XML的那段历史
最早的互联网全是静态网页。就是大片的文字放到网上供人们浏览。而没有交互性。
标记语言也是在这个行情下诞生的,通过标记的方式,让浏览器渲染出:有排版(居中、左对齐、….)、各种花哨字体、加粗和颜色、在特定位置呈现文字等功能的文字。
标记语言什么语法不重要,重点是,浏览器的底层有一个parser为用户呈现完美渲染后的网页
- 聊聊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 场景。 |
XML:曾经的霸主
XML最初是为了扩展 HTML 的表达能力,使得数据能像文档一样有结构、有语义。由于它高度结构化、支持复杂嵌套、具备数据验证机制(如 DTD/XSD),曾一度在 SOAP 协议、早期 Web 服务和企业系统中广泛使用。JSON:现代 Web 的基石
随着 JavaScript 和 AJAX 的流行,JSON(JavaScript Object Notation)凭借轻量、直观、易解析的优势迅速取代 XML,成为前后端通信的标准格式,尤其适用于API数据传输。YAML:简洁的配置王者
YAML 诞生之初就是为了人类友好,语法极简、可读性极强,因此非常适合写配置文件。你可以在 Docker、Kubernetes、GitHub Actions 等 DevOps 工具中频繁看到它的身影。
二、语法要点
文件后缀名
注释
- XML
- json无注释
- YAML 使用
#
json特点:
整体用一个大括号包住,Python键值对。 键用string ""
,值可以是:string
, list []
dictionary