欢迎光临
我们一直在努力

变量用引用,变量交叉引用100例

本文介绍的是YAML的语法内容,在编写docker-compose配置文件的时候使用到,这里做一些整理汇总

本文中的所有案例,都可以在 yamlTojson,js-yaml demo 上进行过测试验证。

YAML语法

— 放在文件的开头,表示YAML文件的开始

… 放在文件的结尾,表示YAML文件的结束

基本语法特点

大小写敏感

通过缩进表示层级关系

禁止使用tab缩进,只能使用空格键

使用 # 表示注释

引号

双引号 “”,不会转移字符串里面的特殊字符,特殊字符作为本身想表达的意思,例如如下的

# yaml内容

comment: “my name is\njs.”

# json内容

{

“comment”: “my name is\njs.”

}

单引号 ”,将会转移特殊字符,当成字符串处理

# yaml内容

comment: ‘my name is\njs.’

# 或者不使用单引号,结果也相同

comment: my name is\njs.

# json内容

{

“comment”: “my name is\\njs.”

}

文本块

| 标记的文本内容缩进表示的快,可以保留块中已有的回车换行,例如如下内容

# yaml内容

comment_1: |

my name is\njs.

comment_2: |+

my name is\njs.

comment_3: |-

my name is\njs.

over: true

# json内容

{

“comment_1”: “my name is\\njs.\n”,

“comment_2”: “my name is\\njs.\n”,

“comment_3”: “my name is\\njs.”,

“over”: true

}

总结一下就是:

| 会保留块中已有的回车换行;

|+ 表示保留文本块末尾的换行;

|- 表示删除字符串末尾的换行;

| / |+ / |- 三者与后面的字符串必须另起一行。

> 标记的文本内容缩进表示的块,将块中回车替换为空格(但是字符串最开始和最末尾如果有回车的话,将不会替换为空格,保留的依然是回车,并且两个回车会作为一个回车来表示),例如

# yaml内容

comment_1: >

hello.

my name is \njs.

goodbye.

# json内容

{

“comment_1”: “\nhello. my name is \\njs.\ngoodbye.\n”

}

列表

列表中的所有成员都开始于相同的缩进级别,最好不适用 tab,而是使用 space(空格) 来表示,并且使用一个 – 作为开头(一个横杆和一个空格)

例如如下的yaml内容和对应的json内容:

# yaml内容

country:

– China

– America

# json内容

{

“country”: [

“China”,

“America”

]

}

纯量、数据类型约定

纯量是最基本的,不可再分的值

字符串: 使用 “” / ” / 不使用引号

布尔值: 使用 true / false

数字: 使用 12 / 12.1 等

空值: 使用 null / ~ / .inf

日期: 日期采用复合ISO8601格式的年月日表示,例如 date: 2018-05-20

时间: 时间采用ISO8601格式,例如 datetime: 2018-05-20t12:00:00-05:00

布尔值

为了使用布尔值,可以通过如下的方式来定义指定,并且如果该布尔值的key出现了多次的话,后面的内容会忽略(注意不是覆盖),所以 is_male 的值为 true 布尔值:

is_male: true

is_male: True

is_male: TRUE

is_male: false

is_male: FALSE

格式强制转换

yaml支持变量类型的强制转换,使用两个感叹号来表示,支持强制转换的类型有:

!!str 表示强制转换为字符串

!!int 表示强制转换为整型

!!float 表示强制转换为浮点类型

!!bool 表示强制转换为布尔类型

!!null 空值

!!set 集合

!!omap / !!pairs 键值列表 / 对象列表

!!seq

例如如下例子:

# yaml内容

info: !!str true

# json内容

{

“info”: “true”

}

!!omap

使用 !!omap 表示生成一个键值列表,即得到的是一个列表,然后列表中的元素是字典,例如:

# yaml内容

info: !!omap

– name1: js

– name2: st

– name3: ob

# json内容

{

“info”: [

{

便宜美国vps”name1″: “js”

},

{

“name2”: “st”

},

{

“name3”: “ob”

}

]

}

引用

& 用来建立锚点,并指定锚点的名字,例如 &parameter

<< 表示合并到当前数据,例如 <<:>

* 用来引用锚点,例如 *parameter

例如如下的例子

# yaml内容

defaults: &user_info

name: js

age: 12

info:

has_more: true

<<:>

# json内容

{

“defaults”: {

“name”: “js”,

“age”: 12

},

“info”: {

“has_more”: true,

“name”: “js”,

“age”: 12

}

}

另外 << 合并的功能,如果有多个锚点在一起合并被引用的时候,是最先引用的变量会覆盖后引用的变量,例如如下例子,最后 r 的值等于 10

# yaml内容

– &LEFT { x: 0, y: 2 }

– &BIG { r: 10 }

– &SMALL { r: 1 }

– # Override

<< : [ *BIG, *LEFT, *SMALL ]

x: 1

label: center/big

# json内容

[

{

“x”: 0,

“y”: 2

},

{

“r”: 10

},

{

“r”: 1

},

{

“r”: 10,

“x”: 1,

“y”: 2,

“label”: “center/big”

}

]

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。