yaml介绍 - 数据类型、基本语法、数据类型的使用

        YAML 首次发表于 2001 年,虽然不如 JSON、XML 之类的语言流行,应用也没有那么广泛,但是 YAML 也有它的优势;

        yaml 语法和其他高级语法类似,可以简单表达清单、散列表,标量等数据形态;

        特色:它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近);

        yaml大多应用于编辑配置文件,配置的文件后缀为.yml;

1 基本语法

        1 大小写敏感;

        2 用缩进表达层级关系:缩进不允许使用tab,只允许空格;缩进的空格数不重要,只要相同层级的元素左对齐即可;

        3 “#”表示注释,只能单行注释;

# YAML
one:
  two: 2
  three:
    four: 4
    five: 5

// 以上的内容转成 JSON 后
"one": {
  "two": 2,
  "three": {
    "four": 4,
    "five": 5 
  }
}

        4 一个文件可以表示多个文件内容:

        用“ --- ”即三个破折号表示一份内容的开始;

        用“ ... ”即三个小数点表示一份内容的结束(非必需)

2 数据类型

YAML 支持以下几种数据类型:

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

        (key: value)形式出现的数据

# YAML
key: value

// JSON
"key": "value"
  •  支持多层嵌套
key: 
    child-key: value
    child-key2: value2
  •  支持流式风格( Flow style)的语法(用花括号包裹,用逗号加空格分隔,类似 JSON)
# YAML
key: { child-key1: value1, child-key2: value2 }
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list),一组以区块格式(Block Format)(即“破折号+空格”)开头的数据组成一个数组
# YAML
values:
  - value1
  - value2
  - value3

// JSON
"values": [ "value1", "value2", "value3" ]
  •  支持多维数组(用缩进表示层级关系
# YAML
values:
  -
    - value1
    - value2
  -
    - value3
    - value4

// JSON
"values": [ [ "value1", "value2"], ["value3", "value4"] ]
  • 纯量(scalars):单个的、不可再分的值
    • 字符串
    • 布尔值
    • 整数
    • 浮点数
    • Null
    • 时间
    • 日期

3 相对复杂的数据类型举例:

companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

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

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

companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]

4 符合结构

数组和对象可以构成复合结构,例:

languages:
  - Ruby
  - Perl
  - Python 
websites:
  YAML: yaml.org 
  Ruby: ruby-lang.org 
  Python: python.org 
  Perl: use.perl.org

转换为 json 为:

{ 
  languages: [ 'Ruby', 'Perl', 'Python'],
  websites: {
    YAML: 'yaml.org',
    Ruby: 'ruby-lang.org',
    Python: 'python.org',
    Perl: 'use.perl.org' 
  } 
}

5 引用

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

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

参考:YAML 入门教程 | 菜鸟教程

一文看懂 YAML - 知乎 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值