网站优化连云港哪家强?,简洁中文网站模板,wordpress 评论回复,wordpress原始密码文章目录 在线解析工具1. 简介2. 语法规则3. 数据类型3.1 数组#xff1a;3.2对象#xff1a;3.3 标量3.4 复合结构3.5 锚点3.5.1 单个锚点3.5.6 多个锚点 3.6 引号 参考 在线解析工具
工具1 工具2
1. 简介
Yaml是一种可读性高的数据标记语言#xff0c;Yaml文件是一种配… 文章目录 在线解析工具1. 简介2. 语法规则3. 数据类型3.1 数组3.2对象3.3 标量3.4 复合结构3.5 锚点3.5.1 单个锚点3.5.6 多个锚点 3.6 引号 参考 在线解析工具
工具1 工具2
1. 简介
Yaml是一种可读性高的数据标记语言Yaml文件是一种配置文件一般主要用于存储全局配置信息等可存放不同类型的数据如列表字典等。
2. 语法规则
文件后缀.yml大小写敏感空格缩进区分层级且空格数量不要求对齐即可但是建议2或4个便于维护。缩进只能使用空格不能使用TAB 后面要有个空格否则会把整体当个字符串 如 下图只有 students3才顺利解析 students1和 students2 都由于空格问题导致解析错误 - #表示注释 备注详细用法见数据类型小节例子
3. 数据类型
数组序列/列表按次序排序的值对象映射/字典/哈希键值对标量单个值不可再分如字符串布尔值Null等
备注
冒号和‘-’后的值前面需空一个空格字符串不使用引号单引号转义特殊字符、空格等
数组
序列/列表按次序排序的值
3.1 数组
如列表numbers[1,2,3,4,5]
# - 列表值使用“-”表示列表中的元素
# 表示方式1
numbers:- 1- 2- 3- 4- 5#表示方式2
numbers: [1,2,3,4,5]对象
映射/字典/哈希键值对
3.2对象
如字典ab:{“a”:1,“b”:“哈哈”}
# 表示方式1
ab: a: 1b: 哈哈 # 字符串哈哈可不使用引号# 表示方式2
ab: {a:1,b:哈哈}注意字典 key:value形式时key必须带引号 students: {“a”:1,“b”:2,c:3} 会被识别为
students:a: 1b: 2c:3:3: null3.3 标量
单个值不可再分如字符串布尔值Null日期等
# 标量
# 字符串
namesusy# 布尔值
isFlag: True# Null使用~表示
a: ~# 日期YYYY-MM-DD格式
d: 2023-03-06# 时间YYYY-MM-DDThh:mm:ss时区
t: 2018-02-17T15:02:3108:00# 特殊字符、空格 使用单引号转义
email: 123qq.com
talk: Hello World日期必须使用ISO 8601格式即yyyy-MM-dd可以使用双引号或者单引号包裹特殊字符或带空格的字符串
3.4 复合结构
包含数组对象标量等结构
复合结构 {“code”:200,students:[{name:“张三”,age:12,hobby:[“打篮球”,“跑步”]},{name:“李四”age:17,hobby:[“打羽毛球”,“看书”]}]}
# hobby也可以使用行内写法
# hobby:[打篮球,跑步]
code: 200
students:-name: 张三age: 12hobby:- 打篮球- 跑步-name: 李四age: 17hobby:- 打羽毛球- 看书引用 引用已有键的值可使用锚点和*别名来引用可通俗理解为复制粘贴可复用yaml文件中已有键值对。
3.5 锚点
3.5.1 单个锚点
引用重复的内容在YAML中可以使用来完成锚点定义使用*来完成锚点引用
当锚点是 标量类型是不管是位于上层还是某个属性都可以用于下面的语法
#方式一 位于属性中在hr中使用SS为Sammy Sosa设置了一个锚点引用名称为SS在rbi中使用*SS完成了锚点使用
hr:
- Mark McGwire
- SS Sammy Sosa
rbi:
- *SS
- Ken Griffey#执行结果
{rbi[Sammy Sosa, Ken Griffey], hr[Mark McGwire, Sammy Sosa]}#方式2 位于上层注意不能独立的定义锚点比如不能直接这样写 SS Sammy Sosa
SS: SS Sammy Sosa
hr:- Mark McGwire- *SS
rbi:- *SS - Ken Griffey当 锚点引用的是对象类型时需要结合: 来一起使用
# 使用别名建立锚点将students全部内容设别名为“stu”
students: stuname: zhangsanage: 12或
students: stu { name“: zhangsan ”age“: 12 }
再来看看此时的锚点语法
# 引用键
# 引用students的内容使用 *别名即可 表示合并当前数据
class1:: *stusex: man以上内容被读取后输出为# 键值
students: name: zhangsanage: 12# 引用键
class1:name: zhangsanage: 12sex: man本质上是合并的结果3.5.6 多个锚点
看个复杂例子会涉及到多个锚点的情况
#在merge中定义了四个锚点分别在sample中使用。
merge:- CENTER { x: 1, y: 2 }- LEFT { x: 0, y: 2 }- BIG { r: 10 }- SMALL { r: 1 }#sample1中: *CENTER意思是引用{x: 1,y: 2}并且合并到sample1中那么合并的结果为sample1{r10, y2, x1}
sample1: : *CENTERr: 10#sample2中: [*CENTER, *BIG] 意思是联合引用{x: 1,y: 2}和{r: 10}并且合并到sample2中那么合并的结果为sample2{otherhaha, x1, y2, r10}
sample2: : [ *CENTER, *BIG ]other: haha#sample3中引入了*CENTER, *BIG还使用了r: 100覆盖了引入的r: 10所以sample3值为sample3{r100, y2, x1}
sample3: : [ *CENTER, *BIG ]r: 100主要是要你知道
多个锚点 需要使用 [] 大括号本身不是啥特殊含义的东西仅仅表示多个对象被merger而已。如果看成普通数组就难以理解了。自身属性优先级高merge过来的同名属性优先级低
3.6 引号
引号可以对于特殊字符是决定可视或不可视
str1: Hello World
str2: Hello\nWorldstr3: Hello World
str4: Hello\nWorld输出结果
str1: Hello World
str2: |- #表示程序解析该段 yaml时看到的是2行字符串HelloWorld
str3: Hello World
str4: Hello\nWorld参考
yaml