YAML语法学习
-
语法规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用tab键,只允许使用空格
- 缩进的数目不重要,只需要层级相同的左边对齐即可
#
表示注释
-
数据结构
- 对象:键值对的集合
- 数组:一组有序的值
- 纯量:单个的值,包括需要的基本数据类型
-
对象
-
使用冒号结果进行表示,且冒号后要加空格
name: xxcheng
转为JSON格式
{"name":"xxcheng"}
-
写法二,所有键值对写出行内对象
user: {name: xxcheng,age: 18}
转为JSON格式
{"user":{"name":"xxcheng","age":18}}
-
-
数组
-
使用连词线开头组成,一个数组,连词线对齐
- jpc - abc - xxcheng
转为JSON格式
["jpc","abc","xxcheng"]
结合对象写法
users: - jpc - abc - xxcheng
转为JSON格式
{"users":["jpc","abc","xxcheng"]}
-
采用行内表示法
users: [jpc,abc,xxcheng]
转为JSON格式
{"user":["jpc","abc","xxcheng"]}
-
-
复合结构
对象和数组复合使用
users: - abc - xyz - jpc websites: - www.baidu.com - www.google.com - www.qq.com - www.xxcheng.cn
转为JSON格式
{"users":["abc","xyz","jpc"],"websites":["www.baidu.com","www.google.com","www.qq.com","www.xxcheng.cn"]}
-
纯量
-
字符串
-
默认不使用引号,但是如果出现空格或者特殊字符则需要使用引号
单引号和双引号都可使用,双引号不会进行转义
s1: 我没有用引号 s2: '我是\n单引号' s3: "我是\n双引号"
转为JSON格式
{"s1":"我没有用引号","s2":"我是\\\n单引号","s3":"我是\n双引号"}
-
如果使用单引号包裹字符串,且含有单引号,需使用两个单引号进行转义或者改用双引号
s1: 'I''m fine.' s2: "I'm fine."
转为JSON格式
{"s1":"I'm fine.","s2":"I'm fine."}
-
字符串允许写成多行,如果没有使用引号(不确定使用了引号是不是不需要添加空格),第二行开始必须添加一个空格,否则会报错,同时换行符会被转为空格
str: 我是第一行 我是第二行 我是第三行
转为JSON格式
{"str":"我是第一行 我是第二行 我是第三行"}
-
使用
|
保留换行符str: | 我是第二行 我是第三行
转为JSON格式
{"str":"我是第二行\n我是第三行\n"}
-
使用
>
将换行替换为空格默认行为也是这样子,不过使用
>
最后一行有一个\n
str: > 我是第二行 我是第三行
转为JSON格式
{"str":"我是第二行 我是第三行\n"}
-
使用
|+
保留字符串末尾的换输出与使用
|
一样str: |+ 我是第二行 我是第三行
转为JSON格式
{"str":"我是第二行\n我是第三行\n"}
-
使用
|-
表示删除字符串末尾的换行str: |- 我是第二行 我是第三行
转为JSON格式
{"str":"我是第二行\n我是第三行"}
-
使用
>-
将字符串的换行替换为空格,且删除最后一行的换行相当于默认情况
str: >- 我是第二行 我是第三行
转为JSON格式
{"str":"我是第二行 我是第三行"}
-
同时,字符串支持插入HTML
str: | <p> <span style="color:red">Hello,xxcheng</span> </p>
转为JSON格式
{ "str":"<p>\n \t<span style=\"color:red\">Hello,xxcheng</span>\n</p>\n" }
-
-
布尔型
-
整数
-
浮点型
-
Null
使用
~
表示name: ~
转为JSON格式
{"name":null}
-
时间
-
日期
-
-
引用
&
用于建立锚点、*
用于引用锚点、<<
用于合并到当前数据defaultData: &defaultValue age: 18 sex: 男 users: - name: jpc <<: *defaultValue - name: xxcheng <<: *defaultValue
转为JSON格式
{"defaultData":{"age":18,"sex":"男"},"users":[{"name":"jpc","age":18,"sex":"男"},{"name":"xxcheng","age":18,"sex":"男"}]}
-
参考
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。