yml 语法

2021-01-24/2022-01-20
0 评论 153 浏览

参考文档:
yaml文件的 锚点& 与 引用*
Yaml语法使用

yml 或者 yaml 结尾的文件

1. 配置普通数据

  • 语法:key: value

  • 实例代码

    1name: zhangsan
    

    value 之前必须有一个空格

2. 配置对象数据

  • 用缩进代表分级

  • key 前面的空格个数不限定,在 yml 语法中,相同缩进代表同一个级别

  • 实例代码

    1person: 
    2  name: haohao 
    3  age: 31 
    4  addr: beijing
    5
    6#或者(不常用)
    7person: {name: haohao,age: 31,addr: beijing}
    

3. 配置 Map 数据

1map:
2  key1: value1
3  key2: value2

4. 配置数组数据 (List、Set)

  • - 代表一个数组元素
  • value 与 - 之间有一个空格
1city:
2  - beijing
3  - tianjin
4  - chongqing
5  - shanghai
6  
7# 或者(不常用)
8city: [beijing,tianjin,chongqing,shanghai]

当数组元素是对象的时候

 1student:
 2  - name: tom
 3    age: 18
 4    addr: beijing
 5  - name: lucy
 6    age: 17
 7    addr: tianjin
 8    
 9# 或者(不常用)
10student: [{name: tom,age: 18,addr: beijing},{name: lucy,age: 17,addr: tianjin}]

5. 锚点

当 yml 文件中出现多个重复内容时,可以通过 锚点 & 与引用 * ,实现引用锚点处内容的功能,从而在修改时,只需要修改锚点处的内容,即可在所有引用处生效

& 设置锚点的名称,<<表示“将给定的哈希合并到当前的哈希”, * 引用锚点的内容。

我们想实现

 1user:
 2	host: 127.0.0.1
 3	db: 8
 4	
 5book:
 6	host: 127.0.0.1
 7	db: 9
 8	
 9comment:
10	host: 127.0.0.1
11	db: 10

有以下两种优化方式

通过 <<

 1localhost: &localhost1
 2	host: 127.0.0.1
 3user:
 4	<<: *localhost1
 5	db: 8
 6	
 7book:
 8	<<: *localhost1
 9	db: 9
10	
11comment:
12	<<: *localhost1
13	db: 10

不通过 <<

 1localhost: 
 2	host: &hostname 127.0.0.1
 3user:
 4	host: *hostname
 5	db: 8
 6	
 7book:
 8	host: *hostname
 9	db: 9
10	
11comment:
12	host: *hostname
13	db: 10

6. 复杂的键

问号+空格 表示复杂的键。当键是一个列表或键值表时,就需要使用本符号来标记

1# 使用一个列表作为键
2 ? [blue, reg, green]: Color
3 # 等价于
4 ? - blue
5   - reg
6   - gree
7 : Color

7. 文本块

使用 “|” 和文本内容缩进表示的块:保留块中已有的回车换行。相当于段落块

1yaml: |
2   JSON的语法其实是YAML的子集,大部分的JSON文件都可以被YAML的解释器解释。
3   如果你想更深入的学习YAML,我建议你去 http://www.yaml.org 看看   

使用 “>” 和文本内容缩进表示的块:将块中回车替换为空格,最终连接成一行

1# 可以使用空行来分段落
2yaml: >
3   JSON的语法其实是YAML的子集,
4   大部分的JSON文件都可以被YAML的解释器解释。   

使用定界符“”(双引号)、‘’(单引号)或回车表示的块:最终表示成一行

1yaml:     # 使用回车的多行,最终连接成一行。
2   JSON的语法其实是YAML的子集,
3   大部分的JSON文件都可以被YAML的解释器解释。
4yaml:     # 使用了双引号,双引号的好处是可以转义,即在里面可以使用特殊符号
5   "JSON的语法其实是YAML的子集,
6   大部分的JSON文件都可以被YAML的解释器解释。"

当数据中含有空格或任意特殊字符,需要使用引号来包裹任何包含冒号的哈希值,

1foo: "somebody said I should put a colon here: so I did"   # 然后这个冒号将会被结尾.

8. 类型

 1integer: 12345     # 整数标准形式
 2octal: 0o34        # 八进制表示,第二个是字母 o
 3hex: 0xFF          # 十六进制表示
 4
 5float: 1.23e+3     # 浮点数
 6fixed: 13.67       # 固定小数
 7minmin: -.inf      # 表示负无穷
 8notNumber: .NaN    # 无效数字
 9
10null:              # 空值
11boolean: [true, false] # 布尔值
12string: ‘12345‘    # 字符串
13
14date: 2015-08-23   # 日期
15datetime: 2015-08-23T02:02:00.1z  # 日期时间
16iso8601: 2015-08-23t21:59:43.10-05:00  # iso8601 日期格式
17spaced: 2015-08-23 21:59:43.10 -5      # ?

显式指定类型

“!”(叹号)显式指示类型,或自定义类型标识。单叹号通常是自定义类型,双叹号是内置类型,例如:

 1#下面是内置类型
 2!!int               # 整数类型
 3!!float             # 浮点类型
 4!!bool              # 布尔类型
 5!!str               # 字符串类型
 6!!binary            # 也是字符串类型
 7!!timestamp         # 日期时间类型
 8!!null              # 空值
 9!!set               # 集合
10!!omap, !!pairs     # 键值列表或对象列表
11!!seq               # 序列,也是列表
12!!map               # 键值表
评论
发表评论
       
       
取消