YAML 是一种非常简洁/强大/专门用来写配置文件的语言
YAML 全称是 ”YAML Ain’t a Markup Language” 的递归缩写,该语言的设计参考了 JSON / XML 和 SDL 等语言,强调以数据为中心,简洁易读,编写简单。
YAML语法特点
# yaml languages: - Ruby - Perl - Python websites: YAML: yaml.org Ruby: ruby-lang.org Python: python.org Perl: use.perl.org # Json { languages: [ 'Ruby', 'Perl', 'Python' ], websites: { YAML: 'yaml.org', Ruby: 'ruby-lang.org', Python: 'python.org', Perl: 'use.perl.org' } }
数据结构
# 纯量 hello # 数组 - Cat - Dog - Goldfish # 对象 animal: pets
引号区别
# 单引号 name: 'Hi,\nTom' # 双引号 name: "Hi,\nTom"
内置类型列表
# YAML允许使用个感叹号(!)强制转换数据类型 # 单叹号通常是自定义类型,双叹号是内置类型 money: !!str 123 date: !Boolean true
纯量是最基本的且不可再分的值
字符串
# 不适用引号 name: Tom # 使用单引号 name: 'Tom' # 使用双引号 name: "Tom"
布尔值
debug: true debug: false
数字
12 # 十进制整数 014 # 八进制整数 0xC #十六进制整数 13.4 #浮点数 1.2e+34 #指数 .inf #无穷大
Null
date: ~ date: null
时间
# 使用iso-8601标准表示日期 date: 2018-01-01t16:59:43.10-05:00
日常使用中基本不会用到的类型
文本块
# 注意“|”与文本之间须另起一行 # 使用“|”标注的文本内容缩进表示的块,可以保留块中已有的回车换行 value: | hello world! # 输出结果 # hello 换行 world!
# +表示保留文字块末尾的换行 # -表示删除字符串末尾的换行 value: | hello value: |- hello value: |+ hello # 输出结果 # hello\n hello hello\n\n
# 注意“>”与文本之间的空格 # 使用>标注的文本内容缩进表示的块,将块中回车替换为空格最终连接成一行 value: > hello world! # 输出结果 # hello 空格 world!
锚点与引用
# 复制代码注意*引用部分不能追加内容 # 使用&定义数据锚点,即要复制的数据 # 使用*引用锚点数据,即数据的复制目的地 name: &a yaml book: *a books: - java - *a - python # 输出结果 book: yaml books:[java, yaml, python]