简单谈谈yaml

328 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

YAML

YAML(Yet Another Markup Language)一种标记语言

介绍

  • 为什么是yaml
  1. 可以简单的表达清单,散列表,标量等数据形态
  2. 特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲
  3. YAML 的配置文件后缀为.yaml

基本知识

  • 要求区分大小写
  • 只能用空格表达缩进,不能用tab
  • 使用缩进表示层级关系
  • 表示缩进的空格数不重要,相同层级的元素左对齐即可
  • #表示注释

数据类型

  1. 对象:键值对的集合(映射,哈希,字典)

对象

  • 对象键值对使用“key: value”结构表示(特别提醒:冒号后有一个空格)

  • 有了单个键值对的表示我们就知道了他们的集合表示

key:{key1: value1, key2: value2, ...}
  • 使用缩进表示层级关系
key: 
    child-key: value
    child-key2: value2
  • 复杂的对象格式,可以使用问号加空格表示复杂的key,配合一个冒号加一个空格代表一个value
?  
   - key1
   - key2
:
   - value1
   - value2

以上的意思就是对象的属性是一个[kkey1,key2],对应值也是一个数组[value1,value2]

纯量

  1. 纯量:单个的不可再分的值

    • 整数
    • 浮点数
    • 字符串
    • 布尔值
    • Null
    • 时间,日期

数组

  1. 数组:一组按次序排列的值(序列,列表)
  • - 开头的行表示构成一个数组
- a
- b
- c
  • 多维数组的行内表示
key: [value1, value2, ...]

数据结构的子成员是一个数组,则可以在该项下面缩进一个空格

-
 - A
 - B
 - C

例子:

fruit:
    -
        id: 1
        name: apple
        price: 2
    -
        id: 2
        name: pear
        price: 1.2
    -
        id: 3
        name: banana
        price: 4

fruit属性是一个数组,每个数组元素由id、name、price三个属性构成

数组也可以使用流式(flow)的方式表示

fruit: [{id: 1,name: apple,price: 2},{id: 2,name: pear,price: 1.2},{id: 3,name: banana,price: 4}]
  • 复合结构

数组和对象符合

languages:
  - Yaml
  - Python 
websites:
  YAML: yaml.org 
  Python: python.org 

引用

&和*共同使用称为引用

defaults: &defaults
  adapter:  postgres
  host:     localhost

#示例
development:                   
  database: myapp_development  
  <<: *defaults
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
development:
  database: myapp_development
  adapter:  postgres
  host:     localhost
#以上示例两部分的代码是完全相等的

可以多次引用

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

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