Yaml:基本语法使用
YAML 入门教程
YAML在线编辑链接

1 简介

在这里插入图片描述

YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。

YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

YAML的配置文件后缀为.yml,如:runoob.yml。

1.1 基本语法

(1)大小写敏感。
(2)使用缩进表示层级关系。
(3)缩进不允许使用tab,只允许空格。
(4)缩进的空格数不重要,只要相同层级的元素左对齐即可。
(5)#表示注释。
(6)文档使用Unicode编码作为字符标准编码,例如UTF-8。
(7)字串一般不使用引号,但必要的时候可以用引号框住。
(8)在单一档案中,可用连续三个连字号(---)区分多个档案。
archive	英[ˈɑːkaɪv] 档案文件; 档案; 档案馆; 档案室;
(9)可选择性的连续三个点号(...)用来表示档案结尾
在流式传输时非常有用,不需要关闭流即可知道到达结尾处。
(10)- value,表示内容为列表格式数据,中间有一个空格。
(11)key: value,表示为字典格式数据,冒号后面一定要有一个空格。

YAML轻巧,敏捷,高效,简便,通用,是理想中的数据模型。
YAML在大多数情况下,都是使用.yaml作为文件的后缀,文件的内容如下:(一家四口的描述,两个孩子,和妻子,可以设置更多的信息)。

name: keyman
age: 32
spouse:
    name: natasha 
    age: 28
children:
    -   name: harry jiang
        age: 3
    -   name: tom jiang
        age: 1

在这里插入图片描述

1.2 应用场景

在编程语言中,json结构的数据易于阅读和获取,无论是在作为参数传入还是作为结果的校验,Json格式都给我们的脚本带来了便捷。

(1)yaml最常用的地方是kubernetes的配置文件,在K8S中,yaml配置文件就是K8S资源对象的说明书,定义了对象包含的元素及采取的动作,每种对象都可以通过yaml配置文件来创建。deployment,还有service都是通过yaml文件来做配置的。
在这里插入图片描述

(2)其次是工程代码中作为配置文件,用于配置一些变量,例如依赖的服务环境,数据库地址、端口,其他环境信息等等,用于替代或结合.properties配置文件来使用。
(3)由于实现简单,解析成本很低,YAML特别适合在脚本语言中使用。

2 数据类型

YAML支持以下几种数据类型:
(1)对象:键值对的集合,又称为映射(mapping)/哈希(hashes)/字典(dictionary)。
(2)数组:一组按次序排列的值,又称为序列(sequence)/列表(list)。
(3)纯量:单个的、不可再分的值,又称标量(scalars)。

2.1 对象(键值表)

2.1.1 单个键值对(冒号+空格)

date: 2015-02-01
customer:
  - name: Jai
items:
  num: 1234
  description: cpu
  price: ¥800.00

在这里插入图片描述

2.1.2 键值表({})

date: 2015-02-01
customer:
  - name: Jai
items: {num: 1234, description: cpu, price: ¥800.00}

在这里插入图片描述

2.1.3 组合表示

companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

意思是companies属性是一个数组,每一个数组元素又是由id、name、price三个属性构成。
在这里插入图片描述

2.2 数组

2.2.1 单个列表项(横线+空格)

- blue
- red
- green

在这里插入图片描述

2.2.2 一组数据([])

[blue, red, green]

在这里插入图片描述

2.2.3 组合表示

- [blue, red, green]     
# 列表项本身也是一个列表
- [Age, Bag]
- site: {osc: www.oschina.net, baidu: www.baidu.com}  
# 这里是同 键值表 组合表示

在这里插入图片描述

2.3 纯量

纯量是最基本的,不可再分的值,包括:

字符串
布尔值
整数
浮点数
Null
时间
日期

在这里插入图片描述

2.4 复合结构

数组和对象可以构成复合结构,例如:

languages:
  - Ruby
  - Perl
  - Python 
websites:
  YAML: yaml.org 
  Ruby: ruby-lang.org 
  Python: python.org 
  Perl: use.perl.org

在这里插入图片描述

2.5 引用(&锚点和*别名)

yaml文件还有一个很nice的使用,就是函数式的复用,不过在yaml中叫做锚点。
可以用来引用:

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

(1)&用来建立锚点(defaults),
(2)<< 表示合并到当前数据,
(3)*用来引用锚点。
在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐