yaml使用

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:

  • red
  • blue
  • green
    一行写法:
    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 Steve
  • Clark
  • Brian
  • Oren
  • *showell
    表示为
[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]

yaml配置文件读取

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值