YAML (/ˈjæməl/)

YAML = YAML Ain’t a Markup Language
一种非标记语言
通用的数据串行化格式,方便人类的读写。

Yaml 与 XML

  • Yaml: data-orinted
  • XML: document markup

Yaml 适用范围

  1. 脚本语言中使用(解析成本低)
  2. 配置文件

Yaml 特点

  1. 无自己的数据类型定义,使用实现语言的数据类型

基本语法

  1. 大小写敏感
  2. 使用缩进表示层级关系
  3. 缩进时不允许使用Tab键,只允许使用空格。
  4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  5. 使用#表示注释
  6. 字符串可以不用引号标注

数据结构

1. map — 哈希表
键值对(Key : Value)
同一缩进的所有键值对属于同一个map

# YAML 表示1
age : 25
name : Seven

# YAML 表示2
{age : 25, name : Seven}

# JSON表示
{'age' : 25, 'name' : 'Seven'}

2. list — 列表
连字符(-)

# YAML 表示1
- a
- b
- 17

# YAML 表示2
[a, b, 17]

# JSON 表示
['a', 'b', 17]

3. scalar — 纯量
数据最小的单位,不可以再分割。
4. map 与 list 嵌套
map和list的元素可以是另一个map或者list或者scalar。
4种常见的数据嵌套。
(1)map in map

# YAML 表示
websites:
  YAML : yaml.org
  Ruby : ruby-lang.org
  Python : python.org
  Perl: use.perl.org

# JSON 表示
{ websites:
  { YAML : 'yaml.org',
    Ruby : 'ruby-lang.org',
    Python : 'python.org',
    Perl: 'use.perl.org'}}

(2)list in map

# YAML 表示
language:
  - YAML
  - Ruby
  - Python
  - Perl

# JSON 表示
{ language : ['YAML', 'Ruby', 'Python', 'Perl']}

(3)list in list

# YAML 表示1
- 
  - Ruby
  - Perl
  - Python
-
  - C
  - C++
  - Java

# YAML 表示2
- - Ruby
  - Perl
  - Python
- - C
  - C++
  - Java

# YAML 表示3
- [Ruby, Perl, Python]
- [C, C++, Java]
# JSON 表示
[ [ 'Ruby',  'Perl',  'Python' ],  [ 'C',  'C++',  'java' ] ]

(4)map in list

# YAML 表示
-
  id : 1
  name : a
-
  id : 2
  name : b

# JSON 表示
[ { id : 1,  name : 'a' },  { id : 2, name : 'b' } ]
    原文作者:大梦想家_0317
    原文地址: https://www.jianshu.com/p/7440c3b5fc29
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞