Spring boot源码分析-yaml语言(9)
YAML(/ˈjæməl/,和camel同发音 )是人类可读的 数据序列化语言。它通常用于配置文件
语法
- 单个流中的多个文档由三个连字符(—)分隔,三个句点(…)可以选择在一个流中结束一个文档。
- 空格(不能使用Tab符号) 缩进用于表示结构; 但是,标签字符绝不允许作为缩进。
- 注释以(#)开始,可以在一行上的任何地方开始,并持续到行尾。注释必须与其他标记与空格字符分开。如果#它们出现在字符串的内部,就表示#文字
- 列表成员用(-)表示,每行一个部件,或者包含在方括号([ ]),并通过分开的逗号 空间(,)。
- 关联数组(:)的形式键:值,每行一个或封闭在大括号({ }),并通过分开的逗号 空间(,)。
- 字符串(标量)通常不引用,但可以用双引号(”)或单引号(’)括起来。
在双引号中,特殊字符可以用反斜杠()开头的C风格的转义序列表示。根据文档,唯一支持的八进制转义是。 - 多行字符串可以使用|保留换行符,也可以使用>折叠换行。
- 重复节点由初始表示符号(&),然后与一个参考星号(*)。
- 节点可以使用感叹号(!!)后跟一个字符串来标注类型或标签,该字符串可以扩展为一个URI。
- 流中的YAML文档之前可能包含由百分号(%)和后跟名称和空格分隔的参数组成的“指令” 。
转换的网站
示例
yaml表示 | json表示 | 备注信息 |
---|---|---|
“ | “ | |
“ | “ | 使用内嵌块的表示方式 |
“ | { name: ‘pets’ } |
* 对象
name: pets
{ name: 'pets' }
- 对象内联表示
people: {name:jamet,age:33}
{ people: { 'name:jamet': null, 'age:33': null } }
- 数组
水果:
- 苹果 - 西瓜 - 桃子
{ '水果': [ '苹果', '西瓜', '桃子' ] }
- 数组内联表示
水果: [ 苹果, 西瓜, 桃子, 果汁]
{ '水果': [ '苹果, 西瓜, 桃子, 果汁' ] }
- 多行字符串表示(一)
数据: |
曾经有一份真挚的爱情
摆在我的面前
,门口说:
“请不要乱来”
所以就不来了
{ '数据': '曾经有一份真挚的爱情\n摆在我的面前\n,门口说:\n“请不要乱来”\n所以就不来了\n' }
- 多行字符串表示(二)
数据: >
曾经有一份真挚的爱情
摆在我的面前
,门口说:
“请不要乱来”
所以就不来了
{ '数据': '曾经有一份真挚的爱情 摆在我的面前 ,门口说: “请不要乱来” 所以就不来了\n' }
- 使用锚点
server: &server
host: 127.0.0.1
port: 1521
dev: database: dev_app <<: *server prod: database: prod_app <<: *server
{ server: { host: '127.0.0.1', port: 1521 },
dev: { database: 'dev_app', host: '127.0.0.1', port: 1521 },
prod: { database: 'prod_app', host: '127.0.0.1', port: 1521 } }
- 类型转换
a: 123
b: "123"
c: !!str 123
d: !!str true
e: 是