YAML是一种格式,用来表示资料的序列
YAML语法:
-
单一文件第一行,使用连续三个连字号"-" 开始
-
“#”号表示注释
-
缩进统一,不能空格和tab混用
-
键值对之间可以换行写也可以逗号隔开
-
键值对之间需要加一个空格来隔开 比如: key: value
YAML的数据类型:
-
标量:一个不可分割的最小值
-
对象:键值对的集合,又可以叫做字典、影射等
-
数组:一组按次序排列的值,又可以叫做序列或者列表
scalar 标量
标量可以是:字符串 布尔值 数值 Null 时间 日期
例如:key对应value
key: 99
age: 22
value是一个不可分割的最小值,这就是标量
注意:
-
yaml中的字符串加不加引号效果都是一样的
-
JSON中字符串必须加双引号
字典:也叫做对象,多个键值对的组合
-
字典由多个key与value构成,value可以是标量,也可以是字典或者列表
-
key和value之间用 :分隔, 并且 : 后面有一个空格,
-
所有k/v可以放在一行,或者每个 k/v 分别放在不同行
例如:key对应的value为对象时:
account: { name: wang, age: 30 }
或者
account:
name: wang
age: 18
列表:也可以叫做数组,由多个元素(k/v)组成
-
每个元素放在不同行,且元素前均使用"-"打头,并且 - 后有一个空格
-
放在同一行:用中括号括起来,多个元素逗号隔开
course: [ linux , golang , python ]
或者 横线开头 用空格隔开
course:
- linux
- golang
- python
列表中的数据可以是单一的标量,也可以是字段或者列表。
范例:yaml表示一个家庭
name: John Smith
age: 41
gender: Male
spouse: { name: Jane Smith, age: 37, gender: Female } # 写在一行里 spouse:配偶
children: [ {name: Jimmy Smith,age: 17, gender: Male}, {name: Jenny Smith, age: 13, gender: Female}, {name: hao Smith, age: 20, gender: Male } ] #写在一行
- {name: Jenny Smith, age: 13, gender: Female}
- {name: hao Smith, age: 20, gender: Male }
或者:
name: John Smith
age: 41
gender: Male
spouse: spouse:配偶
name: Jane Smith #也可以写成多行
age: 37
gender: Female
children:
- name: Jimmy Smith #写在多行,更为推荐的写法
age: 17
gender: Male
- {name: Jenny Smith, age: 13, gender: Female}
- {name: hao Smith, age: 20, gender: Male }
总结:
字典:所有元素写在一行就需要用花括号括起来并使用逗号隔开,如果写在多行就只需要注意缩进
列表:所有元素写在一行需要用中括号括起来,并用逗号隔开,写在多行就需要在每一个元素的前面加短横线
三种常见的数据格式:
-
XML:可扩展标记语言,可用于数据交换和配置
-
JSON:对象表记法,主要用来数据存储和传输,不支持注释
-
YAML: 不是一种标记语言, 主要用来配置