YAML语法简易入门

YAML语言的设计参考了JSON,XML和SDL等语言。YAML 强调以数据为中心,简洁易读,编写简单。

有意思的命名:

AML全称是”YAML Ain’t a Markup Language”(YAML不是一种置标语言)的递归缩写。
在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种置标语言)。

语法特点

  • 大小写敏感
  • 通过缩进表示层级关系
  • 禁止使用tab缩进,只能使用空格键 (个人感觉这条最重要)
  • 缩进的空格数目不重要,只要相同层级左对齐即可
  • 使用#表示注释

支持的数据结构

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值

双引号和单引号的区分

双引号"":不会转义字符串里面的特殊字符,特殊字符作为本身想表示的意思。

name: "123\n123"
---------------------------
输出: 123 换行 123

如果不加引号将会转义特殊字符,当成字符串处理

值的写法

1.字符串

使用”或”“或不使用引号

value0: 'hello World!'
value1: "hello World!"
value2: hello World!

2.布尔值

truefalse表示。

3.数字

12 #整数 
014 # 八进制整数 
0xC #十六进制整数 
13.4 #浮点数 
1.2e+34 #指数 
.inf空值 #无穷大

4.空值

null~表示

5.日期

使用 iso-8601 标准表示日期

date: 2018-01-01t16:59:43.10-05:00

在springboot中yaml文件的时间格式 date: yyyy/MM/dd HH:mm:ss

6.强制类型转换(了解)

YAML 允许使用个感叹号!,强制转换数据类型,单叹号通常是自定义类型,双叹号是内置类型。

money: !!str
123
date: !Boolean
true

内置类型列表

!!int # 整数类型 
!!float # 浮点类型 
!!bool # 布尔类型 
!!str # 字符串类型 
!!binary # 也是字符串类型 
!!timestamp # 日期时间类型 
!!null # 空值 
!!set # 集合 
!!omap,!!pairs # 键值列表或对象列表
!!seq # 序列,也是列表 !!map # 键值表

7.对象(重点)

Map(属性和值)(键值对)的形式:
key:(空格)v :表示一堆键值对,空格不可省略。

car:
    color: red
    brand: BMW

一行写法

car:{color: red,brand: BMW}

相当于JSON格式:

{"color":"red","brand":"BMW"}

8.数组

一组连词线开头的行,构成一个数组。

brand:
   - audi
   - bmw
   - ferrari

一行写法

brand: [audi,bmw,ferrari]

相当于JSON

["auri","bmw","ferrari"]

9.文本块

|:使用|标注的文本内容缩进表示的块,可以保留块中已有的回车换行

value: |
   hello
   world!
输出结果:hello 换行 world!

+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。

value: |
hello

value: |-
hello

value: |+
hello
输出:hello\n hello hello\n\n(有多少个回车就有多少个\n)

注意 “|” 与 文本之间须另起一行

>:使用 > 标注的文本内容缩进表示的块,将块中回车替换为空格,最终连接成一行

value: > hello
world!
输出:hello 空格 world!

注意 “>” 与 文本之间的空格

10.锚点与引用

使用 & 定义数据锚点(即要复制的数据),使用 * 引用锚点数据(即数据的复制目的地)

name: &a yaml
book: *a
books: 
   - java
   - *a
   - python
输出book: yaml 
输出books:[java,yaml,python]

注意*引用部分不能追加内容

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/9634

(0)
郭靖的头像郭靖
上一篇 2023年9月7日 下午5:13
下一篇 2023年9月12日 下午5:30

相关推荐

  • 如何在 Kubernetes Pod 中快速注入环境变量及优先级问题

    1. Kubernetes Pod 引用环境变量的几种方式 1.1 直接 Key/Value 1.2 从 Secret 引用 有两种方式引用 Secret 中的变量: 1.3 从 ConfigMap 引用 有两种方式引用 ConfigMap 中的变量: 2. 变量引用的优先级 从源码中可以看到的实现逻辑是,会初始化一个 Map 存放环境变量,然后按照如下步骤…

    2023年8月14日
    1.5K00
  • Nginx 代理 MySQL 连接,并限制可访问IP

    1.前言 我们的生产环境基本上都部署在云服务器上,例如应用服务器、MySQL服务器等。如果MySQL服务器直接暴露在公网,就会存在很大的风险,为了保证数据安全,MySQL服务器的端口是不对外开放的。 好巧不巧,线上业务遇到bug了,开发的小伙伴需要远程连接MySQL来查看数据,那应该怎么办呢? 我们可以通过Nginx代理(“跳板机”)来进行连接。 2.Ngi…

    2023年8月21日
    1.6K00
  • 使用Openssl 自签发IP证书

    使用Openssl 自签发IP证书 日常交付项目中,总是有这样的场景,再使用一些融合通讯的业务时,需要HTTPS 环境,那就涉及到SSL 证书的签发 考虑到项目成本的问题,往往都是本地自签发IP 证书使用;使用openssl生成根证书,签发服务端证书,安装根证书使浏览器信任自签证书。 创建证书脚本:ssl.sh 证书脚本内容: 签发证书 签发好的证书 安装根…

    2023年5月26日
    1.5K00
  • WordPress无法上传图片、文件(服务器找不到上传的图片文件)

    前言 昨天写了一张文章,发现无法上传特色图片。 上传图片显示如下: 我们复制图片路径的URL,此时出现404问题 根本没有12月份的路径 重点: 为了这个问题我解决了一上午。 网上的大多数方法就是给uploads设置权限,但是我的权限已经是755了,而且是nginx的属主和属组,应该不是权限问题 分析问题 调试模式出现404,说明服务器基本上没有上…

    2023年3月24日
    1.2K00
  • 基于宝塔安装discuz

    前提条件 操作步骤 步骤一:配置PHP 安装扩展 TIP Discuz!Q 依赖于 fileinfo 和 exif 两个扩展运行,部署前需对 PHP 进行相关配置。以下操作将指导您安装fileinfo 和exif 扩展。 删除禁用函数 TIP Discuz!Q 需删除禁用的函数 puten…

    2023年7月31日
    1.4K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信