YAML 写法

YAML语法

  1. YAML使用 Unicode 编码作为标准字符编码
  2. 大小写是敏感
  3. .yaml.yml 做为后缀
  4. 缩进代表层级关系,只能用空格 (不能用 tab 键) 空格数一般为 2 相同即可,同级左对齐

YAML 使用方式

  1. 日期
# 日期使用ISO 8601格式,即:yyyy-MM-dd
date: 2019-03-13
# windows 为系统定义的格式
date: 2020/7/28
  1. 时间
# 时间使用ISO 8601格式,时间和日期之间使用T连接,使用+或者-代表时区
datetime: 2019-03-13T20:49:33+08:00
  1. 数字

在这里插入图片描述

# int值支持,二进制,八进制,十六进制
二进制: 0b1010_0111_1010_1110
八进制: 以 0 开头,后面跟上(0-7)=>0 (0-7)=>0(10115)
十六进制: 0x 开,(0-9,a-f)跟

特别注意, 就算用字符串接收, 程序内部也是先读取到 Object.class, 最后再转成你接收的值 (如 String.class), 所以 010 读取到 String 变为了 8

  1. null值
使用~表示null
nullvalue: ~

相当于{ nullvalue: null }
  1. Map(键值对)
people: { name: zhangsan, age: 20 }
等于:
people: 
  name: zhangsan
  age: 20
  1. 数组
color: [blue, red, green]
等于:
color: 
  - blue
  - red
  - green
  1. ? (问号+空格): 复杂键 Complex mapping key (key 可以为数字, 特殊字符等)
? [blue, red, green]: value
含义:
key 是一个数组, 里面是 blud, red, green
value 是冒号后面的值
!: "abc"
含义:
key: "!"
value: "abc"

Reference: https://stackoverflow.com/questions/33987316/what-is-a-complex-mapping-key-in-yaml

  1. 使用缩进表示的对象列表
items:
    - item: cpu
      model: i3
      price: ¥800.00
    - item: HD
      model: WD
      price: ¥450.00
等于
items: [ {item:cpu, model:i3, price:¥800.00}, {item:HD, model:WD, price: ¥450.00} ]
  1. 文本块

    1. 使用 | 接 “文本 + 缩进” 表示: 保留回车换行。
    2. 使用 > 接 “文本 + 缩进” 表示: 回车替换为空格,最终成一行
    3. 使用定界符 "内容"(双引号)、'内容'(单引号)会保留换行符
    4. 若单引号之中还有单引号,则必须连续使用两个单引号转义
run: |
  mkdir -p ~/.ssh
  echo "$ACTION_DEPLOY_KEY" > ~/.ssh/id_rsa
  chmod 700 ~/.ssh
  chmod 600 ~/.ssh/id_rsa
  ssh-keyscan github.com >> ~/.ssh/known_hosts
  git config --global user.email "howeres"
  git config --global user.name "howeres@email.com"
  npm install hexo-cli -g
  npm install
strvalue: newline

字符串类的值,也可以使用单引号或双引号,若字符串中包含有空格或者特殊字符,则必须使用单引号或者双引号,双引号与单引号还有不同,双引号不会对特殊字符转义,若单引号之中还有单引号,则必须连续使用两个单引号转义
字符串可以拆成多行,每一行会被转成一个空格,对于多行字符串可以使用|保留换行符,也可以使用>折叠换行,使用+表示保留文字块末尾的换行,使用-表示删除字符串末尾的换行
字符串也可以HTML标记

strvalue: 'new\nline'
使用单引号相当于{ strvalue: 'new\\nline' }

strvalue: "new\nline"
使用双引号相当于{ strvalue: 'new\nline' },双引号不会对特殊字符转义

strvalue: new
          line
字符串可以拆成多行,每一行会被转成一个空格,相当于{ strvalue: 'new line' }

strvalue: |
  new
  line
使用|来表示需要保留换行符,相当于{ strvalue: 'new\nline\n' }

strvalue: >
  new
  line
使用>折叠换行,相当于{ strvalue: 'new line\n' }

strvalue: |+
  new
  line
使用+表示保留末尾的换行,相当于{ strvalue: 'new\nline\n' }

strvalue: |-
  new
  line
使用-表示删除末尾的换行,相当于{ strvalue: 'new\nline' }

strvalue: |
  <p style="color: red">
    newline
  </p>
相当于{ strvalue: '<p style="color: red">\n  newline\n</p>\n' }
  1. “!”(叹号)显式指示类型,或自定义类型标识。单叹号是自定义类型,双叹号是内置类型
!!int               # 整数类型
!!float             # 浮点类型
!!bool              # 布尔类型 可以是True,true,tRue,False等,忽略大小写
!!str               # 字符串类型
!!binary            # 也是字符串类型
!!timestamp         # 日期时间类型 ISO8601格式
!!null              # 空值
!!set               # 集合
!!omap, !!pairs     # 键值列表或对象列表
!!seq               # 序列,也是列表
!!map               # 键值表
例如:
isString: !!str 2015-08-23

会进行强转:
str: !!str 3.14
int: !!int "123"

输出:{'int': 123, 'str': '3.14'}
  1. 锚点与引用,定义数据的复用。

    1. 使用 “&” 定义数据锚点(即要复制的数据)
    2. 使用 “*” 引用上述锚点数据(即数据的复制目的地)
hr:
  - Mark McGwire
  # Following node labeled SS
  - &SS Sammy Sosa            # 定义要复制的数据
rbi:
  - *SS # Subsequent occurrence   这里是数据复制目标
  - Ken Griffey
defaults: &defaults
  adapter: postgres
  host: localhost

database1:
  <<: *defaults
  database: db1

database2: *defaults
  1. 使用注解 @Value 映射
@Value("${service.port:8090}") // 美元花括号,冒号后面是默认值
  1. 使用注解 @ConfigurationProperties 映射

在使用@ConfigurationProperties(prefix = "thread-pool", ignoreUnknownFields = false)时,yml 文件内可以是propertyNameproperty-name,(i.e., 松散绑定,是 SpringBoot 的内部约定)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值