pqjwyn

前言

本文翻译https://www.csestack.org/yaml-vs-json-vs-xml-difference/,下文会针对当前现有的数据序列化语言做下梳理。重点突出YAML是什么,优缺点,和YML/JSON对比,以便于大家依据自己场景选择合适的语言。

YAMML 简介

YAML和JSON、XML一样是数据序列化语言,使用缩进来描述格式化数据。
下面的例子可以看到其如何工作的:

就像Python一样有个缩进约束,假如有过python开发体验的话,就会很明显的发现其使用缩进的数量来定义不同的区块。正如前面提到,有很多如JSON、XML这样被广泛使用的序列化语言。

YAML使用场景

对于序列化语言来说,使用场景如下:

  • 与服务器之间传输数据
  • 使用一个配置文件来配置应用,这些文件声明对应参数和相应取值
  • 在同一个应用不同组件之间转换数据
  • 中间数据存储
    针对此类场景,YAML有一些明确的优势相比于其他同类语言。也是为什么现在越来越多的开发者使用其的地方。

YAML的优势

  • YAML中没有额外的定界符,所以相比JSON或者XML更轻量级。
  • 没有额外定界符,所以更易读(这里持原作者和译者都持保留观点,不少开发者认为有定界符的可读性更强。)
  • YAML使数据更易于理解,因此常用于配置文件中(观点同上)
  • 应用比价哦广泛,除配置文件之外,传输数据和中间存储都有实践。
  • YAML是JSON 的超集,对于合法的JSON代码,同样可以被YAML解析,这样对于使用JSON和YAML的应用来说,可以使用一个解析器完成两种解析。
    然而其并没有如期望中那样受欢迎,具体而言,因为不同的序列化语言都有其特定的适宜语言或者场景(下文可以提到),并且YAML有一些不足相较于其他广泛使用的序列化语言。

YAML的不足

  • 相对年轻,早期很多应用已经使用JONS或者XML来构建,对于开发者来说迁移至YAML成本是十分高的。
    举例,假如我们负责的项目是使用XML的,就算我们开发独立的插件也会倾向于XML以便更加契合。
  • 流行广泛程度反向作用域生态系统,例如XML 有着比YAML极为成熟的生态。JSON从2000年开始出现,同样被高度采用。因此在YAML上可以找到对JSON的支持(译者注:既有向现实妥协的味道,也是聪明的做法)
  • YAML中有很多方式来体系化数据层级,因此处理时会相对复杂些。性能上相对于XML和JSON会有差别。
  • 可能一些开发人员发现很难使用其复杂的缩进格式。

三种概述

YAML,XML和JSON是常用的数据序列化语言,下面会针对三者之间的不同展开叙述。原作者针对如何选择适合自己项目的数据序列化语言给出了部分建议,以供参考。

三者直观对比

  • YAM 是 'YAML Aint Markup Language'(YAML不是一种标记语言

相关文章: