YAML 语法笔记

YAML 即 YAML Ain’t a Markup Language 的递归缩写,它实质上是一种通用的数据串行化格式,被广泛应用于运维领域。

概览

基本语法

  • 大小写敏感
  • 使用缩进表示层级关系,只要相同层级的元素左侧对齐即可
  • 缩进时不允许使用Tab键,只允许使用空格。
  • 使用 # 进行行注释

数据结构

  • 对象:键值对的集合,又称为映射,哈希或字典
  • 数组:一组按次序排列的值,又被称为序列或列表
  • 纯量:单个的,不可再分割的值
  • 复合结构:对象和数组结合使用,形成复合结构

对象与数组

对象

  1. 基本写法
    name: Cubat
    age: 23
    
  2. 行内对象写法
    hash: { name: Cubat, age:23 }
    

数组

  1. 基本写法
    animal:
    - Cat
    - Dog
    
  2. 行内数组写法
    animal: [Cat, Dog]
    

复合结构

  • 复合结构写法
    languages:
    - Perl
    - Ruby
    - Python
    websites: 
     YAML: yaml.org
    

纯量

字符串

  1. 字符串默认不用引号表示
  2. 若字符串中包含空格或特殊字符,需要放在引号之中
  3. 单引号和双引号都可以使用,但双引号不会对特殊字符转义
  4. 单引号中若需要再使用单引号,需要连续两个单引号进行转义
  5. 字符串可以写成多行,但从第二行开始必须有一个空格缩进,并且换行符会被转义为空格
  6. 多行字符串可以使用 | 保留换行符,也可以使用 > 折叠换行
  7. + 表示保留文字块末尾的换行,- 表示删除字符串末尾的换行

字符串以外的元素

  1. 数值:直接以数字表示,例如:
    number: 12.30
    
  2. 布尔值用 true 和 false 表示
    isSet: true
    isGet: false
    
  3. null 用 ~ 表示
    girlfriend: ~
    
  4. 时间使用 ISO8601 格式
    time: 2002-12-14t21:59:43.10-05:00
    
  5. 日期也使用 ISO8601格式
    date: 1976-07-31
    
  6. 使用双感叹号强制转换数据类型
    e: !!str 123
    f: !!str true
    

参考资料

评论