YAML是”YAML Ain’t a Markup Language”(YAML不是一种置标语言)的递归缩写,早先YAML的意思其实是:”Yet Another Markup Language”(另外一种置标语言)
YAML使用可打印的Unicode字符,可使用UTF-8或UTF-16 使用空白字符 (不能使用Tab) 分层,同层元素左侧对齐 单行注解由井字号 ( # ) 开始,可以出现在行中任何位置 每个清单成员以单行表示,并用短杠+空白 (- ) 起始 每个杂凑表的成员用冒号+空白 (: ) 分开键和值 杂凑表的键值可以用问号 (?) 起始,表示多个词汇组成的键值 字串一般不使用引号 ,但必要的时候可以用引号框住 使用双引号表示字串时,可用倒斜线 (\) 进行特殊字符转义 区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(使用符号|)或新行折叠(使用符号>)两种方式 在单一档案中,可用连续三个连字号(---)区分多个档案 可选择性的连续三个点号(...)用来表示档案结尾(在流式传输时非常有用,不需要关闭流即可知道到达结尾处) 重复的内容可使从参考标记星号 (*)复制到锚点标记( &) 指定格式可以使用两个惊叹号 ( !! ) ,后面接上名称
# 客户订单 date: 2015-02-01 customer: - name: Jai items: - no: 1234 # 订单号 - descript: cpu
--- # 文档开始 - 第一章 简介 - 第二章 设计目录
--- # 文档开始 [blue, red, green]
--- # 文档开始 - [blue, red, green] # 列表项本身也是一个列表 - [Age, Bag] - site: {osc:www.oschina.net, baidu: www.baidu.com} # 这里是同 键值表 组合表示
# 客户订单 date: 2015-02-01 customer: - name: Jai items: - no: 1234 # 订单号 - descript: cpu - price: ¥800.00
# 客户订单 date: 2015-02-01 customer: - name: Jai items: {no: 1234, descript: cpu, price: ¥800.00}
# 使用一个列表作为键 ? [blue, reg, green]: Color # 等价于 ? - blue - reg - gree : Color
Color: - blue - red - green # 相当于 (也是 JSON 的表示) {Color: [blue, red, green]} div: - border: {color: red, width: 2px} - background: {color: green} - padding: [0, 10px, 0, 10px] # 使用缩进表示的键值表与列表项 items: - item: cpu model: i3 price: ¥800.00 - item: HD model: WD price: ¥450.00 # 上面使用 “-” 前导与缩进来表示多个列表项,相当于下面的JSON表示 items: [{item:cpu, model:i3, price:¥800.00}, {item:HD, model:WD, price: ¥450.00}]
# 注意 ":" 与 "|" 之间的空格 yaml: | JSON的语法其实是YAML的子集,大部分的JSON文件都可以被YAML的解释器解释。 如果你想更深入的学习YAML,我建议你去 http://www.yaml.org 看看
# 注意 ":" 与 ">" 之间的空格,另外可以使用空行来分段落 yaml: > JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。 如果你想更深入的学习YAML,我建议你去 http://www.yaml.org 看看
yaml: # 使用回车的多行,最终连接成一行。 JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。 yaml: # 使用了双引号,双引号的好处是可以转义,即在里面可以使用特殊符号 "JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。"
yaml: # 使用回车的多行,最终连接成一行。 JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。
yaml: # 使用了双引号,双引号的好处是可以转义,即在里面可以使用特殊符号 "JSON的语法其实是YAML的子集, 大部分的JSON文件都可以被YAML的解释器解释。"
foo: "somebody said I should put a colon here: so I did" # 然后这个冒号将会被结尾.
foo: "somebody said I should put a colon here: so I did" #
然后这个冒号将会被结尾.
integer: 12345 # 整数标准形式 octal: 0o34 # 八进制表示,第二个是字母 o hex: 0xFF # 十六进制表示 float: 1.23e+3 # 浮点数 fixed: 13.67 # 固定小数 minmin: -.inf # 表示负无穷 notNumber: .NaN # 无效数字 null: # 空值 boolean: [true, false] # 布尔值 string: ‘12345‘ # 字符串 date: 2015-08-23 # 日期 datetime: 2015-08-23T02:02:00.1z # 日期时间 iso8601: 2015-08-23t21:59:43.10-05:00 # iso8601 日期格式 spaced: 2015-08-23 21:59:43.10 -5 # ?
isString: !!str 2015-08-23 # 强调是字符串不是日期数据 picture: !!binary | # Base64 图片 R0lGODlhDAAMAIQAAP//9/X 17unp5WZmZgAAAOfn515eXv Pz7Y6OjuDg4J+fn5OTk6enp 56enmleECcgggoBADs=
#下面是内置类型
!!int # 整数类型 !!float # 浮点类型 !!bool # 布尔类型 !!str # 字符串类型 !!binary # 也是字符串类型 !!timestamp # 日期时间类型 !!null # 空值 !!set # 集合 !!omap, !!pairs # 键值列表或对象列表 !!seq # 序列,也是列表 !!map # 键值表
#下面是一些例子: --- !!omap - Mark: 65 - Sammy: 63 - Key: 58 --- !!set # 注意,“?”表示键为列表,在这里列表为 null ? Mark ? Sammy ? Key # 下面是自定义的类型或标识 %TAG ! tag:clarkevans.com,2002: # % 是指令符号 --- !shape # Use the ! handle for presenting # tag:clarkevans.com,2002:circle - !circle center: &ORIGIN {x: 73, y: 129} radius: 7 - !line start: *ORIGIN finish: { x: 89, y: 102 } - !label start: *ORIGIN color: 0xFFEEBB text: Pretty vector drawing. #test.yaml(双叹号,强制转换类型) str: !!str 3.14 int: !!int "123" 输出:{'int': 123, 'str': '3.14'} #明显能够看出123被强转成了int类型,而float型的3.14则被强转成了str型
第一步:使用 “ &” 定义数据锚点(即要复制的数据)
第二步:使用 “*” 引用上述锚点数据(即数据的复制目的地)
---
hr:
原文链接:https://blog.csdn.net/fly910905/article/details/99882542?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase