编程语言-9-YAML数据序列化格式
Yaml:基本语法使用YAML 入门教程YAML在线编辑链接1 简介YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。YAML的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非
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)*用来引用锚点。
更多推荐
所有评论(0)