
YAML和JSON的介绍
JSON是JavaScript Object Notation的缩写,易于理解和自我描述。它以标准的文本格式提供,用于保存和传输数据。JSON有助于在网络应用中传输数据,数据从服务器发送到客户端,可以在网页上查看。YAML用于脚本配置文件,可以与其他编程语言结合。它是流行的数据序列化语言、人类可读语言和适应性。文章中描述了JSON和YAML的区别和比较。
YAML与JSON的正面比较 (信息图)
下面是YAML与JSON的8大区别。

YAML和JSON的比较表
| 特点 | YAML | JSON |
| 定义 | YAML是JSON的一个超集,它不是一种标记语言。这里的列表以连字符开始,取决于缩进和空白。 | JSON是JavaScript Object Notation的缩写,用于数据支持,所有记录都由逗号分隔。字符串和键是由双引号构成的。 |
| 属性 | YAML比JSON更适用于配置,而JSON适用于序列化格式和为API传输数据。 | JSON对人的可读性很好,适合于序列化。它是明确的,可以通过HTTP传输数据。 |
| 规格 | YAML不局限于嵌入块状字,注释和支持复杂的数据类型。它可以进行自我引用。YAML解析器正在开发中,它大多不太安全。 | 用户可以使用YAML解析器来解析JSON。 |
| 层次结构 | YAML中的注释是用数字/哈希符号表示的,沿着其余的行进行移动。序列和映射可以嵌套,层次结构由缩进程度来表示。 | 在当前版本中没有启用注释,但在之前的版本中是可以的。数组和对象可以嵌套,用大括号和小括号表示。 |
| 字符串 | 它不需要引号,但支持单引号和双引号 | 它是双引号的。 |
| 文件 | 根节点应该是一个有效的数据类型。三个破折号代表新文件 | 它不支持许多文件的传输,根节点必须是一个对象或数组。 |
| 数字 | 它内置了对八进制、十六进制数字、整数和浮点的支持。 | 它不支持无穷大 |
定义 YAML是JSON的一个超集,它不是一种标记语言。这里的列表以连字符开始,取决于缩进和留白。JSON是JavaScript Object Notation的缩写,用于数据支持,所有的记录都由逗号来区分。字符串和键是由双引号构成的。
属性YAML比JSON更适用于配置,而JSON适用于序列化格式和传输API的数据。JSON对人的可读性很好,适合于序列化。它是明确的,并且可以通过HTTP传输数据。
规格 YAML不限于嵌入块字,注释和支持复杂的数据类型。它可以进行自我引用。YAML解析器正在开发中,它大多不太安全。用户可以使用YAML解析器来解析JSON。
层次结构 YAML中的注释是用数字/哈希符号表示的,为其余的行移动。序列和映射可以嵌套,层次结构由缩进程度来表示。在当前版本中没有启用注释,但在之前的版本中是可以的。数组和对象可以嵌套,用大括号和小括号表示。
字符串 它不需要引号,但支持单引号和双引号 它是双引号。
文档 根节点应该是一个有效的数据类型。三个破折号代表新文件 它不支持很多文件的传输,根节点必须是一个对象或数组
数字 它内置了对八进制、十六进制数字、整数和浮点的支持。它不支持无穷大
YAML与JSON的主要区别
- 提示性。
JSON是面向实施的,并被广泛使用,因为它有最大的本地支持,由于它的速度。但YAML与JSON相同,但倾向于拉动更多的卡车。但是当JSON和YAML在速度方面进行比较时,JSON表现得更快。众所周知,YAML文件是一个较小的JSON,因为它的""字符,在特殊情况下有可能使YAML高度优化和快速。
- 内存。
在内存方面,JSON和YAML都占用了类似的数据结构,但YAML解析器的效率比JSON解析器有效,仍然在争论哪个内存有效。
- 可访问性。
Python程序员喜欢YAML,而JavaScript程序员则选择JSON。JSON的语法很容易记忆,它对每个语法的意义也很容易理解。但在YAML中,由于其少数边缘情况和细微之处相当复杂和极端,所以不能给人类一个清晰的理解。因为一些解析器被部署在某个规范中,所以更难理解在给定注释中提供的表达式的真正含义。JSON没有注释部分,这使得它有点困难,但在实践中,它可以避免。
- 兼容性。
如果不使用JSON库,建立一个现代语言是不可想象的,它的解析器部署了任何最低限度的东西,而不是完整的规范。YAML不像JSON那样具有全球性,但它是广泛存在的,在这里每个解析器都意味着一个不同的子集。但它的文件的互操作性较差。它是脚本YAML递归结构的潜力,在少数转换器中具有无限循环。YAML的炸弹可能是在循环检测中发现的。由于没有引用,所以很难将关于JSON中对象的复杂结构序列化。但在YAML序列化中可以更有效地执行,它可以使攻击者在一些编码环境中运行任意代码。
- 互联网。
JavaScript在网络中占据了巨大的优势,因为对于数据格式的响应,著名的网络API让人目不暇接。当涉及到团队环境时,在一般应用的网络编程脚本中,使用YAML而不是JSON并不是首选。许多程序员,不知道YAML的存在,在互联网上使用YAML时感到很不舒服。如果用户正在执行网络编程,他可以选择JSON,因为当他遇到下一个翻译步骤时,互联网上有许多代码可供选择。
- 互操作性。
根据开发者的观点,YAML使用的识别空间是Python开发者所需要的。有多余的解析器对JSON和YAML都有效。YAML的空间格式是紧凑的,制表符不被认为是空间,这使得用户在编辑和解释空间列的按键时很困难。一个常见的错误是YAML需要最小的标点符号,并且比JSON更压缩,这是一个错误的假设。不可见的空白在YAML中是被强制要求的,但它被应用在较少的字符中,应该被正确的识别解释。但JSON并不像YAML那样使用空白,但它表示层次和分组,为了有效的压缩传输,消除不需要的空白很容易被践踏。
总结
YAML有多种功能,包括关系锚和注释,但它相当复杂,难以理解,当你开始经常使用它时,它可以比JSON更可读,更实惠。在很短的时间内编写一个定义良好的JSON解析器的脚本是很容易的。JSON的工作是快速的,而且仍然可以与高端系统互操作。很少有重复的键在JSON中理论上是有效的,但在YAML中却成为无效的。