从网络技术视角简单理解JSON、XML和YAML
JSON、XML和YAML,都是数据有序化序言,或者说数据有序化格式。这里有必要先聊聊什么是数据有序化。
1.数据有序化(Data Serialization)
简单说即是将数据转化为标准格式的过程,再详细点说就是为了让标准格式或者结构的数据能以文件形式进行存储或者通过网络进行传输以及通过其他应用程序进行解读和重构。
那为什么我们需要数据有序化?
因为只有这样数据才可以在不同的应用程序之间以双方都能理解的方式进行交互和沟通。举个栗子,假如APP A基于Python开发,APP B基于JAVA开发,两种语言必然是以不同的方式存储和理解数据,因此需要一种标准的数据格式让两者之间能正常交互数据。
客户端与SDN控制器的数据交互过程:没有标准的数据有序化参与
这里举例SDN控制器与客户端通信的场景说明数据交互过程:
√ 假设客户端App通过REST API使用GET(即HTTP请求)向SDN控制器进行信息查询
√ 控制器直接将内部变量数据发送给客户端,而不将他们转换为标准格式的数据(例如JSON)
√ 客户端无法直接理解控制器发来的数据,因为控制器和外部客户端程序可能是完全不同的语言编写的,他们各自存储和理解数据的方式各不相同而无法直接通信。
客户端与SDN控制器的数据交互过程:有标准的数据有序化JSON参与
√ 客户端发起GET请求
√ 控制器将内部变量数据发送到API,同时转换为标准的JSON格式,并将JSON格式的数据通过网络发送到客户端
√ 控制器发送的数据为标准的JSON格式数据,控制器和客户端都能正确理解
√ 客户端正确理解数据后即可按照本地应用程序语言规则进行本地化数据处理和存储
2. JSON(JavaScript Object Notation)
这里不深入具体数据结构,仅作简单介绍
√ 开放的标准文件格式和数据交互格式,兼顾人类可读性和计算机可读性,既可以文件方式进行存储也可以网络方式进行传输
√ 在RFC 8295中标准化
√ 起源于JavaScript,但本身不依赖具体语言,很多现代编程语言都能生成和读取JSON格式的数据
-->REST API通常使用JSON
下图是一个完整的JSON Object数据结构,简单感受下:
人类易读表达 机器易读表达3. XML(Extensible Markup Language)
√ 从命名可知原本就是标记语言,原来就是用在HTML代码中用来标识HTTP页面中字体、大小、颜色和标题等信息的。
√ 现在也被用作数据有序化语言,用于RSET API数据传输
√ XML比较不那么好读
√ <key>value<key>表达形式
按惯例来张图,简单感受下:
4.YAML(YAML Aint Markup Language)
√ 最初也是一门标记语言,不过后来发展成了数据有序化语言,英文原来叫Yet Anather Markup Language(又一门标记语言!),现在则叫YAML Aint Markup Language(我现在完全不是标记语言!)
√ YAML现在常见用于网络自动化工具Ansible
√ YAML最简单易读!
√ YAML文件以--(两个杠)开头,用 - (一个杠)对应一个List
√ Key和Value表达形式为key:value
继续按惯例来张图,简单感受下:
最后再来张图,对比下JSON和YAML针对接口信息的简单表达: