YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,他并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。
YAML文件语法
YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。
它的基本语法规则如下。
大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
# 表示注释,从这个字符一直到行尾,都会被解析器忽略。
YAML 支持的数据结构有三种。
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值。字符串、布尔值、整数、浮点数、Null、时间、日期
下面直接以代码的形成来了解YAML文件
# 数组,等价于[ 'Cat', 'Dog', 'Goldfish' ] - Cat - Dog - Goldfish # 二维数组,等价于[ [ 'Cat', 'Dog', 'Goldfish' ] ] - - Cat - Dog - Goldfish # 对象、数组嵌套 { languages: [ 'Ruby', 'Perl','Python' ] } languages: - Ruby - Perl - Python # 对象嵌套 { hash: { name: 'Steve', foo: 'bar' } } hash: name: Steve foo: bar hash: { name: Steve, foo: bar } # { hash: { name: 'Steve', foo: 'bar' } } # 字符串 str: name1 # { str: 'name1' } 字符串默认不使用引号表示。 str: 'key: value' # { str: 'key: value' } 如果字符串之中包含空格或特殊字符,需要放在引号之中。 str: '内容\n字符串' # { str: '内容\\n字符串'} 单引号会对转义字符 str: "内容\n字符串" # { str: '内容\n字符串' } 双引号不会对转义字符 str: 'labor''s day' # { str: 'labor\'s day' } 单引号之中如果还有单引号,必须连续使用两个单引号转义。 str: 这是一段 多行 字符串 # { str: '这是一段 多行 字符串' } 字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。 # 多行字符串可以使用|保留换行符 等价于{ str: 'Foo\nBar\n'} #+表示保留缩进块末尾的换行,-表示删除字符串末尾的换行。 等价于{ str: 'Foo\nBar'} str: |- Foo Bar # 可以使用>折叠换行 下面的等价于{str: 'Foo Bar\n' } str: > Foo Bar #字符串之中可以插入 HTML 标记。 { message: '\n<p style="color: red">\n 段落\n</p>\n' } message: | <p style="color: red"> 段落 </p> # 其他类型变量 number: 12.30 # { number: 12.30 } isSet: true #{ isSet: true } parent: ~ # { parent: null } date: 1976-07-31 #{ date: new Date('1976-07-31') } e: !!str 123 # { e: '123'} YAML 允许使用两个感叹号,强制转换数据类型。 f: !!str true # { f: 'true'} YAML 允许使用两个感叹号,强制转换数据类型。