Yaml
YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写。它实质上是一种通用的数据串行化格式。
基本语法
使用Unicode字符,可以使用UTF-8或者UTF-16
大小写敏感
使用缩进表示层级关系,缩进时不允许使用Tab键,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
在单一文件中,可用连续三个连字号
---区分多个文件,有选择性的连续三个点号( ... )用来表示文件结尾
纯量(scalars)数据
字符串
单行字符串
# 普通形式 string1: hello world! # 单引号,不会解析任何转义字符,所有内容都会原样输出 string2: 'hello\nworld!' # 如果要表示单引号,需要使用 '' string3: 'hello ''world!''' # 双引号,会解析转义字符,如果要表示\,需要使用\\ string4: "hello\nworld!"{ "string1": "hello world!", "string2": "hello\\nworld!", "string3": "hello 'world!'", "string4": "hello\nworld!" }多行字符串,每行的换行以及空格会被转换为单个空格字符
# 普通样式,不支持转义字符,每行行尾空格不保留 lstr1: a bb\n ccc #这里有空格 # 单引号样式,不支持转义字符,'的输入需要使用''替代转义 lstr2: 'a\n ''bb'' ccc ' # 双引号样式,支持转义字符,\与"要进行转义处理,\放置在行尾可以删除空格 lstr3: "a\n bb\"\ ccc "{ "lstr1": "a bb\\n ccc", "lstr2": "a\\n 'bb' ccc ", "lstr3": "a\n bb\"ccc " }多行字符串,使用
>折叠换行符,将多行折叠为一行注意每行文字之前要有相同的缩进
会在末尾添加换行符
不会解析转义字符
\,',", 他们都会被原样输出行与行之间会有空格
bstr1: > 'a' "bb" \ccc\ dddd{ "bstr1": "'a' \"bb\" \\ccc\\ dddd\n" }多行字符串,使用
|保留换行符注意每行文字之前要有相同的缩进
会在末尾添加换行符
不会解析转义字符
\,',", 他们都会被原样输出行与行之间保留换行符,而不是空格
bstr2: | 'a' "bb" \ccc\ dddd{ "bstr2": "'a'\n\"bb\"\n\\ccc\\\ndddd\n" }多行字符串,使用
+和-对>以及|进行样式裁剪>,|:“剪辑”:保持尾行换行符,删除尾随空白行。>-,|-:“strip”:删除尾行换行符,删除尾随空白行。>+,|+:“keep”:保持尾行换行符,保持尾随空行。
cstring1: | a bb cstring2: |- a bb cstring3: |+ a bb{ "cstring1": "a\nbb\n", "cstring2": "a\nbb", "cstring3": "a\nbb\n\n" }
数字
空值
布尔
时间和日期
使用 iso-8601 标准表示日期与时间
类型转换
Yaml 内置的类型列表:
类型
描述
int
整数
float
浮点数
bool
布尔
str
字符串
binary
字符串
timestamp
日期时间
null
空
set
集合
omp, pairs
键值列表或对象列表
seq
序列,也是列表
map
键值表
使用!进行类型转换,如果是单个!,代表转换类型为自定义类型,如果是!!则是内置类型:
对象数据
一个yaml文档就是一个对象:
行内对象
数组数据
一组连词线开头的行,构成一个数组:
行内数组
引用
引用对象
等同于
引用单个值
等同于
参考
最后更新于
这有帮助吗?