yaml使用

tech2022-10-23  132

yaml简介

最近看代码,觉得大的工程都会使用单独使用配置文件,进行变量的声明和配置,而很多都是以yaml文件的形式保存。yaml是一种非常灵活的格式,几乎是json的超集。除了支持注释、换行符分隔、多行字符串、裸字符串和更灵活的类型系统之外,YAML 也支持引用文件,以避免重复代码。

yaml语法规则

基本规则:

大小写敏感使用缩紧表示层级关系; 例如key:(空格)value,表示一个键值对,空格不可以省略。缩进时不允许使用Tab键,只允许使用空格缩紧的空格树木不重要,只要相同层级的元素左侧对齐即可#表示注释,从这个字符一直到行尾,都会被解析器忽略

yaml的数据结构

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

对象

对于对象,格式为: Map(属性和值)(键值对)的形式

key:(空格)value表示一个键值对,空格不可以省略。例如下面的

person: name: vivi age: 18

一行写法: person:{name: vivi,age: 18} 读取后相当于json格式:

{"name":"vivi","age":18}

数组

一组连词线开头的行,构成一个数组。数组前加有 “-” 符号,符号与值之间需用空格分隔。

color:

redbluegreen 一行写法: color: [red,blue,green] 相当于JSON:

[“red”,“blue”,“green”]

纯量

单个的、不可再分的值。(如:字符串、bool值、整数、浮点数、时间、日期、null等)

n1: 8 n2: 8.8 n3: true n4: false n5: ‘vivi’

特殊符号

null使用~表示 例如: parent: ~ 表示为:

{ parent: null }

YAML 允许使用两个感叹号,强制转换数据类型。 例如: e: !!str 123 f: !!str true 表示为:

{ e: '123', f: 'true' }

锚点&和别名*,可以用来引用。

defaults: &defaults adapter: postgres host: localhost development: database: myapp_development <<: *defaults test: database: myapp_test <<: *defaults

等同于下面的代码

defaults: adapter: postgres host: localhost development: database: myapp_development adapter: postgres host: localhost test: database: myapp_test adapter: postgres host: localhost

&用来建立锚点(defaults),<<表示合并到当前数据,* 表示引用锚点。 例如:

&showell SteveClarkBrianOren*showell 表示为 [ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]

yaml配置文件读取

参考:http://www.ruanyifeng.com/blog/2016/07/yaml.html

最新回复(0)