相关文章推荐
干练的墨镜  ·  Java Configuration :: ...·  1 年前    · 
爱笑的感冒药  ·  ADO.NET中SQL ...·  1 年前    · 
绅士的墨镜  ·  python - str.contains ...·  1 年前    · 
  • YAML语法规范;
  • YAML文本块得使用;
  • YAML锚点与引用;
  • YAML存量,数据类型约定;
  • YAML对象及数组的使用规则。

YAML简介

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

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

YAML语法及规范

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

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

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

name: "123\n123" 

输出: 123 换行 123

单引号'':会将字符串里面的特殊字符转义为字符串处理

name: '123\n123'

输出: 123\n123

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

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

value: |
   hello
   world!

输出:hello 换行 world!

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

value: |
hello
value: |-
hello
value: |+
hello

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

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

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

value: > hello
world!

输出:hello 空格 world!

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

使用定界符“”(双引号)‘’(单引号)回车表示的块,最终表示成一行。

**锚点与引用 **

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

name: &a yaml
book: *a
books: 
   - java
   - *a
   - python

输出book: yaml
输出books:[java,yaml,python]

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

** 存量,数据类型约定 **

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

  • 字符串
    使用’'或""或不使用引号
value0: 'hello World!'
value1: "hello World!"
value2: hello World!
  • 布尔值
    truefalse表示。

  • 数字

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

  • 日期
    使用 iso-8601 标准表示日期

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

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

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

内置类型:

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

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

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

相当于json:

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

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

brand:
   - audi
   - bmw
   - ferrari
brand: [audi,bmw,ferrari]

相当于json

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

参考
yaml 1.2规范
360doc
阮一峰的网络日志

yaml文件,后缀名为yml,在springcloud中,常用的是application.yml,在使用中遇到很多坑,一定要注意以下几点。 1、每行开头只能是空格,不能使用tab键。 spring: application: name: app-itemayiedu-order spring: application: name: app-itemayiedu-order 2、冒号:... YAMLYAML Ain’t Markup Language)是一种轻量级的数据序列化格式,被广泛用于配置文件、数据传输等场景。对于YAML文件中包含的感叹号,它们通常被用作YAML语法中的特殊字符,表示布尔值、数字、字符串等数据类型。因此,在YAML文件中如果需要使用感叹号本身作为数据内容,需要将其用引号包围起来。例如,在如下的YAML配置文件中,如果需要保存一个字符串"hello!这样就可以避免感叹号被解释为YAML语法中的特殊字符了。 $ pip install yamale 注意:某些平台(例如Mac OS)可能仅随附Python 2,可能未安装pip。 安装Python 3还应该安装pip。 要保留对默认软件的任何系统依赖关系,请考虑将Python 3安装为本地软件包。 请注意,替换系统提供的Python可能会破坏其他软件。 Mac OS用户可能希望研究MacPorts,自制软件或从源代码构建Python 3。 在这三种情况下,都可能需要Apple的Xcode命令行工具(CLT)。 另请参见下面的。 从以下位置下载Yamale: : 临时解压缩 运行python setup.py install (可能必 :cloud_selector: 将您的OpenAPI规范部署到以生成并托管漂亮的REST API文档。 Tinyspec为更冗长的格式提供了一种轻巧且易于阅读的替代方法。 它依靠OpenAPI格式的优势,而无需维护单个大型JSON或YAML文件或使用某些特殊软件,而是使您可以将API端点和模型保留在单独且易于维护的文件中。 可能的输出包括YAML和JSON格式的完整OpenAPI规范,或在的帮助下以HTML格式创建的API文档。 要使用tinyspec ,请全局安装。 使用 : npm install -g tinyspec 快速入门和演示 要生成API文 Spyc是用纯PHP编写的YAML加载程序/转储程序。 给定一个YAML文档,Spyc将返回一个您可以使用的数组,但是您认为合适。 给定一个数组,Spyc将返回一个字符串,其中包含根据您的数据构建的YAML文档。 YAML是一种非常人性化且用途广泛的数据序列化语言,可用于日志文件,配置文件,自定义协议和作品。 有关更多信息,请参见 。 Spyc支持YAML 1.0规范。 使用Spyc 使用Spyc很简单: require_once "spyc.php" ; $ Data = Spyc :: YAMLLoad ( 'spyc.yaml' ); 或(如果您喜欢函数语法) require_once "spyc.php" ; $ Data = spyc_load_file ( 'spyc.yaml' ); 捐款,有人吗? 如果您发现Spyc有用,我会在193b <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</art SpringCloud Config概述 分布式系统面临的—配置问题: 微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务。由于每个服务都需要必要的配置信息才能运行,所以一套集中式的、动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题,我们每一个微服务自己带着一个application.yml,上百... docker-compose.yml文件详解 Compose允许用户通过一个docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。 Compose模板文件是一个定义服务、网络和卷的YAML文件。Compose模板文件默认路径是当前目录下的docker-compose.yml,可以使用.yml或.yaml作为文件扩展名。 Docker-Compose标准模板文件应该包含``version、services、networks` 三大部分,最关键的是         "YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写,早先YAML的意思其实是:"Yet Another Markup Language"(另外一种置标语言),但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。         YAML的官方定义很简单,即“一种人性化的数据格式定义语言”,其主要 1. 认识 YAML   YAML是一个类似 XML、JSON 的标记性语言YAML 强调以数据为中心,并不是以标识语言为重点。因而 YAML 本身的定义比较简单,号称“一种人性化的数据格式语言”。 1.1 YAML 的设计目标: 人类容易阅读 可用于不同程序间的数据交换 适合描述程序所使用的数据结构,特别是脚本语言 丰富的表达能力与可扩展性...