yaml是一种文件格式,后缀名.yml或.yaml,它的基本语法规则如下:
1. 大小写敏感
2. 使用缩进表示层级关系
3. 缩进时不允许使用Tab键,只允许使用空格。
4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
5. #号表示注释
yaml支持的数据结构有三种:
1. 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
2. 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
3. 纯量(scalars):单个的、不可再分的值
使用举例:
#使用英文冒号分隔key与value,冒号后面至少要有一个空格
number: 12.30 # 数值型 等同于JavaScript { number: 12.30 }
isSet: true # 布尔型 { isSet: true }
parent: ~ # null { parent: null }
date: 2020-01-01 # 日期采用 ISO8601 格式 { date: new Date('2020-01-01') }
dateString: '2020-01-01' # 日期的字符串形式 格式 { date: '2020-01-01' }
e: !!str 123 # 使用两个感叹号强转数值类型为字符串 { e: '123'}
str: 这是一行字符串 # 字符类型 { str: '这是一行字符串' }
str2: 我是一个 人。我的名字叫\t李四 # 遇到特殊字符时,不加引号的效果;空格仍在,制表符被转义了 { str2: '我是一个 人。我的名字叫\\t李四' }
str3: '我是一个 人。我的名字叫\t李四' # 加单引号的效果;空格仍在,制表符被转义了 { str3: '我是一个 人。我的名字叫\\t李四' }
str4: "我是一个 人。我的名字叫\t李四" # 加双引号的效果;空格仍在,制表符原样输出 { str4: '我是一个 人。我的名字叫\t李四' }
# 第一个冒号的值是一个对象,所以不需要有空格;等同于 { server: { 'context-path': '/rwrp', port: 8081 } }
server:
context-path: /rwrp
port: 8081
# 第二种写法,将所有键值对写成一个行内对象。注意所有冒号都要有一个空格
server2: {context-path: /rwrp,port: 8081}
# 数组 ,减号后要有一个空格 [ 'Cat', 'Dog', 'Goldfish' ]
- Cat
- Dog
- Goldfish
# 二维数组,减号前有一个空格 [ [ 'Cat', 'Dog', 'Goldfish' ] ]
-
- Cat
- Dog
- Goldfish
# 对象的值为数组 { person: [ 'tearch', 'student' ] }
person:
- tearch
- student
# 数组的行内写法 { animal: [ 'Cat', 'Dog' ] }
animal: [Cat, Dog]
# 复杂结构
#{ languages: [ 'Ruby', 'Perl', 'Python' ] websites: { YAML: 'yaml.org',Ruby: 'ruby-lang.org',Python: 'python.org',Perl: 'use.perl.org' } }
languages:
- Ruby
- Perl
- Python
websites:
YAML: yaml.org
Ruby: ruby-lang.org
Python: python.org
Perl: use.perl.org
yml 在线转js http://nodeca.github.io/js-yaml/