数据交换协议--JSON、XML、YAML、TOML、TLV
- 1 数据交换协议
- 2 常用协议
-
- 2.1 JSON
-
- 介绍
- 示例
- 2.2 XML
-
- 介绍
- 示例
- 2.3 CSON
-
- 介绍
- 示例
- 2.4 TOML
-
- 介绍
- 示例
- 2.5 YAML
-
- 介绍
- 示例
- 2.6 TLV
- 参考
1 数据交换协议
数据交换协议的目的是让两个系统进行正确的数据交互。所以几乎各种开发语言都提供了方便使用的数据交换功能。
像JSON、XML、YAML、TOML直接按照规则使用,可用在软件的配置文件,系统间通信协议。如工业设备的操作命令,使用JSON协议。
TLV是自己定义的协议,详见参考[1]。如用在上下位机的串口通信中。
2 常用协议
2.1 JSON
介绍
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
示例
{
"name": "中国","province": [{
"name": "黑龙江","cities": {
"city": ["哈尔滨", "大庆"]}}, {
"name": "广东","cities": {
"city": ["广州", "深圳", "珠海"]}}, {
"name": "台湾","cities": {
"city": ["台北", "高雄"]}}, {
"name": "新疆","cities": {
"city": ["乌鲁木齐"]}}]
}
2.2 XML
介绍
可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。
示例
<?xml version="1.0" encoding="utf-8"?>
<country><name>中国</name><province><name>黑龙江</name><cities><city>哈尔滨</city><city>大庆</city></cities></province><province><name>广东</name><cities><city>广州</city><city>深圳</city><city>珠海</city></cities></province><province><name>台湾</name><cities><city>台北</city><city>高雄</city></cities></province><province><name>新疆</name><cities><city>乌鲁木齐</city></cities></province>
</country>
2.3 CSON
介绍
首先,有两个 CSON 规范。 一个代表 CoffeeScript Object Notation,另一个代表 Cursive Script Object Notation。后者不经常使用,所以我们不会关注它。我们只关注Coffee Script。
CSON 需要一点介绍。首先,我们来谈谈 CoffeeScript。CoffeeScript 是一种通过运行编译器生成 JavaScript 的语言。它允许你以更加简洁的语法编写 JavaScript 并转译成实际的 JavaScript,然后你可以在你的 web 应用程序中使用它。CoffeeScript 通过删除 JavaScript 中必需的许多额外语法,使编写 JavaScript 变得更容易。CoffeeScript 摆脱的一个大问题是花括号 —— 不需要它们。同样,CSON 是没有大括号的 JSON。它依赖于缩进来确定数据的层次结构。CSON 非常易于读写,并且通常比 JSON 需要更少的代码行,因为没有括号。
要用 CoffeeScript 解析/标记化/lex/转译或其它方式来使用 CSON。
示例
books: [id: 'bk102'author: 'Crockford, Douglas'title: 'JavaScript: The Good Parts'genre: 'Computer'price: 29.99publish_date: '2008-05-01'description: 'Unearthing the Excellence in JavaScript'
]
2.4 TOML
介绍
TOML(Tom 的显而易见的最小化语言Tom’s Obvious, Minimal Language)允许以相当快捷、简洁的方式定义深层嵌套的数据结构。名字中的 Tom 是指发明者 Tom Preston Werner,他是一位活跃于我们行业的创造者和软件开发人员。与 JSON 相比,语法有点尴尬,更类似 ini 文件。这不是一个糟糕的语法,但是需要一些时间适应。
目前使用的较少,支持的语言不丰富。
示例
[[books]]
id = 'bk101'
author = 'Crockford, Douglas'
title = 'JavaScript: The Good Parts'
genre = 'Computer'
price = 29.99
publish_date = 2008-05-01T00:00:00+00:00
description = 'Unearthing the Excellence in JavaScript'
2.5 YAML
介绍
YAML 来自一个 Python 的贡献者。YAML 具有与 CSON 相同的功能集和类似的语法,有一系列新功能,以及几乎所有 web 编程语言都可用的解析器。它还有一些额外的功能,如循环引用、软包装、多行键、类型转换标签、二进制数据、对象合并和集合映射。它具有非常好的可读性和可写性,并且是 JSON 的超集,因此你可以在 YAML 中使用完全合格的 JSON 语法并且一切正常工作。你几乎不需要引号,它可以解释大多数基本数据类型(字符串、整数、浮点数、布尔值等)。
示例
books:- id: bk102author: Crockford, Douglastitle: 'JavaScript: The Good Parts'genre: Computerprice: 29.99publish_date: !!str 2008-05-01description: Unearthing the Excellence in JavaScript
2.6 TLV
详见 网络通信–协议设计
参考
1、网络通信–协议设计
2、百科–JSON
3、JSON、XML、TOML、CSON、YAML 大比拼
4、YAML文件简介
5、深入对比TOML,JSON和YAML
6、比较一下XML, JSON和YAML
7、系统间通信(一)——数据交换序列化格式
8、百科–XML