YAML Ain’t Markup Language https://yaml.org/
YAML 语言教程 - 阮一峰 http://www.ruanyifeng.com/blog/2016/07/yaml.html
基本语法: 大小写敏感 使用缩进表示层级关系 缩进不允许使用tab,只允许空格 缩进的空格数不重要,只要相同层级的元素左对齐即可 ‘#’表示注释
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary) 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list) 纯量(scalars):单个的、不可再分的值
http://www.bejson.com/validators/yaml_editor/
字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。
str: 这是一段 转成json是 "str": "这是一段 多行 字符串" | 竖线保留换行符this: | 对应 json "this": "Foo\nBar\n" |+ 保留末尾换行|- 删除末尾换行s1: | s2: |+ s3: |- 对应 json "s1": "Foo\n", "s2": "Foo\n\n\n", "s3": "Foo" >大于号折叠换行that: > 转为 json "that": "Foo Bar\n" yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
str: 这是一段 转成json是 "str": "这是一段 多行 字符串"
转成json是
| 竖线保留换行符this: | 对应 json "this": "Foo\nBar\n" |+ 保留末尾换行|- 删除末尾换行s1: | s2: |+ s3: |- 对应 json "s1": "Foo\n", "s2": "Foo\n\n\n", "s3": "Foo" >大于号折叠换行that: > 转为 json "that": "Foo Bar\n" yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
|
this: | 对应 json "this": "Foo\nBar\n" |+ 保留末尾换行|- 删除末尾换行s1: | s2: |+ s3: |- 对应 json "s1": "Foo\n", "s2": "Foo\n\n\n", "s3": "Foo" >大于号折叠换行that: > 转为 json "that": "Foo Bar\n" yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
this: | 对应 json "this": "Foo\nBar\n"
对应 json
|+ 保留末尾换行|- 删除末尾换行s1: | s2: |+ s3: |- 对应 json "s1": "Foo\n", "s2": "Foo\n\n\n", "s3": "Foo" >大于号折叠换行that: > 转为 json "that": "Foo Bar\n" yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
|+
|-
s1: | s2: |+ s3: |- 对应 json "s1": "Foo\n", "s2": "Foo\n\n\n", "s3": "Foo" >大于号折叠换行that: > 转为 json "that": "Foo Bar\n" yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
s1: | s2: |+ s3: |- 对应 json "s1": "Foo\n", "s2": "Foo\n\n\n", "s3": "Foo"
>大于号折叠换行that: > 转为 json "that": "Foo Bar\n" yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
>
that: > 转为 json "that": "Foo Bar\n" yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
that: > 转为 json "that": "Foo Bar\n"
转为 json
yaml示例#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
#我是对象。。。顺便说一下注释是# animal: pets #注意:1.冒号后必须有空格 #2.可以将键值对写成一个行内对象 #3.空格标识层级关系 hash: {name: Stave, foo: bar } #我是数组 type: - Cat - Dog - Goldfish - big dog - small dog #我是纯量、最基本不可分 number: 11.11 #布尔类型 isBeautiful: true #时间采用 time: 20:41:58 date: 2018-7-9 str0: '我是字符串' str1: "我是双引号,单引号和双引号没有区别,不会对特殊字符转义" str2: 'It''s a test,单引号中如果有单引号的字符,需要转义' str3: ~ #~是空的意思 str4: !!str true '两个!表示强制转换' str5: 我也可以不用引号引起来,厉害不 str6: '但是有空格 或者 特殊字符* 我就必须放在引号中了' str7: 字符串可以换行 每换一行都要有空格标记,换行符会被转义为空格 #否则就报错,只能被注释了!!!!惨兮兮 str8: | 我不是一般的竖线,我是可以保留换行符的竖线 str9: > 可以折叠换行 str10: |- 我不想要末尾的换行符 str11: |+ 我又想要末尾的换行符了,后面跟了一串尾巴 str12: <p style="color:red">Hello world<p> 转成 json "animal": "pets", "hash": { "name": "Stave", "foo": "bar" "type": [ "Cat", "Dog", "Goldfish" "Dog": [ "big dog", "small dog" "number": 11.11, "isBeautiful": true, "time": 74518, "date": "2018-7-9", "str0": "我是字符串", "str1": "我是双引号,单引号和双引号没有区别,不会对特殊字符转义", "str2": "It's a test,单引号中如果有单引号的字符,需要转义", "str3": null, "str4": "true '两个!表示强制转换'", "str5": "我也可以不用引号引起来,厉害不", "str6": "但是有空格 或者 特殊字符* 我就必须放在引号中了", "str7": "字符串可以换行 像这样 每换一行都要有空格标记,换行符会被转义为空格", "str8": "我不是一般的竖线,我是可以保留换行符的竖线\n", "str9": "我是 可以折叠换行 的大于号\n", "str10": "我不想要末尾的换行符", "str11": "我又想要末尾的换行符了,后面跟了一串尾巴\n", "str12": "<p style=\"color:red\">Hello world<p>"
转成 json