YAML

  yaml应用:https://www.cnblogs.com/beautiful-code/p/6425020.html 

一、yaml的介绍

  一、简介

  1、诞生

  YAML参考了其他多种语言,包括:XMLC语言PythonPerl以及电子邮件格式RFC2822。
  Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。

  2、命名

  YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写。
  在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言)

  3、功能

  YAML语言的设定目标就是方便人类读写。它本质上是一种通用的数据串行化格式

  • YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态、。
  • 它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
  • 尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料。
  • 由于YAML使用空白字符和分行来分隔资料,使的他特别适合用grep、Python、Perl、Ruby操作。
  • 其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构中会变得复杂而难以辨认。

  二、yaml基本语法规则

  • 大小写敏感
  • 使用缩进表示层次关系
  • 缩进时不允许使用tab键,只允许使用空格
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  • “#”表示注释
  • yaml文件以“---”作为文档的开始,以“...”作为文档的结束(这个不是强制要求

  三、yaml支持的数据结构有三种

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

二、yaml支持的数据结构

  一、对象:映射(mapping)/ 哈希(hashes) / 字典(dictionary)

  对象的一组键值对,使用冒号结构表示。

  • number
  • float

  二、数组

  三、纯量

  1、数值

  整数、布尔值

  2、布尔值

  表示true的值
  true, True, TRUE, yes, Yes, YES, on, On, ON, y, Y

  表示false的值
  false, False, FALSE, no, No, NO, off, Off, OFF, n, N

  3、字符串

  字符串默认不使用引号表示
  单引号和双引号都可以使用,双引号不会对特殊字符转义。
  单引号之中如果还有单引号,必须连续使用两个单引号转义。
  字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。
  多行字符串可以使用|保留换行符,也可以使用>折叠换行。
  +表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
  字符串之中可以插入 HTML 标记。

  4、引用

  锚点&和别名*,可以用来引用。

  &用来建立锚点(defaults),<<表示合并到当前数据,*用来引用锚点。

三、高级YAML语法 

  !unsafe使用

  变量值中保存的数据应被视为不安全的,防止不安全的字符子集和信息披露。

---
hosts: all
vars:
    my_unsafe_variable: !unsafe 'unsafe value'
tasks:
    ...

  Playbooks 采用YMAL 语法结构,基本的YMAL 语法请参考
  http://docs.ansible.com/YAMLSyntax.html

  python利用pyyaml模块进行解析yaml语言
  http://pyyaml.org/wiki/PyYAMLDocumentation

  yaml格式在线检查
  http://yaml-online-parser.appspot.com/


 文章来源链接:https://www.jianshu.com/p/51a885f55a61

原文地址:https://www.cnblogs.com/happy-king/p/8709142.html