YAML简介(.yml文件后缀)

YAML Ain’t a Markup Language, Yet Another Markup Language.

情景

最近在使用 github+hexo 配置属于自己的博客时遇到了以 yml 为后缀的配置文件,因为不太了解,所以顺便学习一下。

YAML 是什么?

YAML 是一种可读性高,以数据为中心的数据序列化格式。可以表达 对象(键值对)数组标量 这几种数据形式 能够被多种编程语言和脚本语言解析。

什么是序列化

序列化指的是将自定义的对象或者其他数据进行持久化,从而方便进行传输和存储。一般情况下,能够序列化的数据一定能够通过反序列化恢复。

YAML 语法与格式

基本语法

  • k: v 的形式来表示键值对的关系,冒号后面必须有一个空格
  • # 表示注释
  • 对大小写敏感
  • 通过缩进来表示层级关系,缩排中空格的数目不重要,只要相同阶层的元素左侧对齐就可以了
  • 缩进只能使用空格,不能使用 tab 缩进键
  • 字符串可以不用双引号

格式

对象和键值对

通过 k: v 的方式表示对象或者键值对,冒号后必须要加一个空格:

Name: Astron
Sex: female
School: TJU

通过缩进来表示对象的多个属性:

People: 
   Name: Astron
   Sex: female
   School: TJU

也可以写成

people: {name: Astron, sex: female}

数组

数组(或者列表)中的元素采用 - 表示,以 - 开头的行表示构成一个数组

eg1:

- A
- B
- C

eg2:

people: 
    - yyy
    - zzz
    - www

行内表示:

people: [yyy, zzz, www]

eg3: 对象数组

people: 
    - 
      name: yyy
      age: 18
    - 
      name: zzz
      age: 19

使用流式表示:

people: [{name: yyy, age: 18},{name: zzz, age: 19}]

标量

标量是最基本的不可再分的值,包括:

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

eg:

boolean:
   - true # 大小写都可以
   - false
   
float:
   - 3.14
   - 3.25e+5 # 科学计数法

int: 12

null: 
   nodeName: name

string: 123

date: 2020-01-01 # 格式为 yyyy-MM-dd

datetime: 2020-01-10T15:02:08+08:00 # 日期和时间使用T连接,+表示时区

引用

& 用于建立锚点,* 用于引用锚点,<< 表示合并到当前数据

eg1:

defaults: &defaults
   adapter: ppp
   host: qqq
   
development: 
   database: mq
   <<: *defaults

相当于:

defaults:
   adapter: ppp
   host: qqq
   
development: 
   database: mq
   adapter: ppp
   host: qqq

eg2:

- &showell steve
- clark
- eve
- *showell

相当于:

- steve
- clark
- eve
- steve

使用场景

脚本语言

YAML 实现简单,解析成本低,所以特别适合在脚本语言中使用

序列化

配置文件

写 YAML 比 XML 方便,所以 YAML 也可以用来做配置文件,但是,不同语言间的数据流转不建议使用YAML。

参考

百度百科
菜鸟教程

你可能感兴趣的:(基础知识,数据序列化,数据序列化,配置文件)