YAML 初体验

YAML从标记语言阵营走出并应以为傲,宣称JSON是自己小弟

Posted by T.L on August 10, 2016

YAML is a human friendly data serialization standard for all programming languages.——official site

赞一下这个名字,YAML(YAML Ain’t Markup Language) (/ˈjæməl/ ),戏谑得不行,本身就是递归的写法,起初他还是叫”Yet Another Markup Language”(另外一种置标语言)。但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名,YAML的官方定义很简单,即 一种人性化的数据格式定义语言 ,其主要功能用途类似于XML或JSON,YAML使用空白字符和分行来分隔数据,且巧妙避开各种封闭符号,如:引号、括号等,以避免这些符号在复杂层次结构中变得难以辨认。因此语法规则与空格有很大关系,他用缩进表示层级关系,缩进时不允许使用Tab键,只允许使用空格,而且缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。

YAML vs JSON

JSON的语法其实是YAML的子集,大部分的JSON文件都可以被YAML的剖析器剖析。虽然大部分的数据分层形式也可以使用类似JSON的格式,不过YAML并不建议这样使用,除非这样编写能让文件可读性增加,更重要的是,YAML的许多扩展在JSON是找不到的,如:进阶资料形态关系锚点字串不需要引号映射资料形态会储存键值的顺序等。

数据结构

YAML 支持的数据结构有三种。

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值

python 运行YAML案例

这里以python版本的YAML作为示例:ruamel.yaml以下为在jupyter运行内容。 点击查看