语法
除某些控制字符外,YAML语言接受整个Unicode字符集。所有可接受的字符都可以在YAML文档中使用。YAML文档可以用UTF-8,UTF-16和UTF-32编码。(虽然UTF-32不是强制性的,但如果解析器具有JSON兼容性,则必须使用它。)
- 空格 缩进用于表示结构; 但是,绝不允许制表符作为缩进。
- 注释以井号(
#)开头,可以从一行开始,一直持续到行尾。必须通过空格字符将注释与其他标记分开。[13] 如果#字符出现在字符串中,则它们是数字符号(#)文字。 - 列表成员由前导连字符(
-)表示,每行一个成员,或用方括号([ ])括起,并用逗号 空格(,)分隔。 - 关联数组使用冒号 空格(
:)以表格key:value表示,每行一个或用花括号({ })括起来并用逗号 空格(,)分隔。- 关联数组键可以以问号(
?)为前缀,以允许明确地表示自由多字键。
- 关联数组键可以以问号(
- 字符串(标量)通常不加引号,但可以用双引号(
")或单引号(')括起来。 - 块标量用缩进分隔,并带有可选修饰符以保留(
|)或fold(>)换行符。 - 单个流中的多个文档由三个连字符(
---)分隔。- 三个句点(
...)可选地结束流中的文档。
- 三个句点(
- 重复节点最初用&符号(
&)表示,然后用星号(*)引用。 - 节点可以使用感叹号(
!!)后跟一个字符串来标记类型或标记,该字符串可以扩展为URI。 - 流中的YAML文档可以在“指令”之后,该指令由百分号(
%)后跟名称和空格分隔的参数组成。YAML 1.1中定义了两个指令:- %YAML指令用于标识给定文档中的YAML版本。
- %TAG指令用作URI前缀的快捷方式。然后可以在节点类型标签中使用这些快捷方式。
YAML要求用作列表分隔符的冒号和逗号后跟空格,以便通常可以表示包含嵌入标点符号(例如5,280或http://www.jianshu.com)的标量值,而无需用引号括起来。









网友评论