IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    YAML 入门篇教程

    Teacher Du发表于 2024-11-01 03:51:26
    love 0

    YAML 的语法和其它的高级语言类似,并且可以简单表达清单、散列表等数据形态。使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或者编辑数据结构、各种配置文件、倾印调试内容、文件大纲。

    基本语法

    1. 大小写较敏感;

    2. 使用缩进表示层级关系;

    3. 缩进不允许使用 tab,仅限空格;

    4. 缩进空格数不重要,只要相同层级的元素左对齐即可;

    5. 井号表示注释。

    对象

    对象:键值对的集合,又称映射、哈希、字典。

    对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格。

    也可以使用 key:{key1: value1, key2: value2}。

    还可使用缩进表示层级关系;

    1
    2
    3
    key:
    child-key: value
    child-key2: value2

    较复杂的对象格式,可使用问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value:

    1
    2
    3
    4
    5
    6
    ?
    - complexkey1
    - complexkey2
    :
    - complexvalue1
    - complexvalue2

    意思即对象的属性是一个数组[complexkey1,complexkey2],对应值也是一个数组[complexvalue1,complexvalue2]。

    数组

    数组:一组按照次序排列的值,又称序列、列表。以横杠开头的行表构成一个数组:

    1
    2
    3
    - A
    - B
    - C

    支持多维数组,可以使用行内表示:

    1
    key: [value1, value2]

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

    1
    2
    3
    4
    -
    - A
    - B
    - C

    一个相对复杂例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    companies:
    -
    id: 1
    name: company1
    price: 200W
    -
    id: 2
    name: company2
    price: 500W

    意思是 companies 的属性是一个数组,每一个数组元素又是由 id/name/price 三个属性构成的。

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

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

    复合结构

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    languages:
    - Ruby
    - Perl
    - Python
    websites:
    YAML: yaml.org
    Ruby: ruby-lang.org
    Python: python.org
    Perl: use.perl.org

    转换为 JSON:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    { 
    languages: [ 'Ruby', 'Perl', 'Python'],
    websites: {
    YAML: 'yaml.org',
    Ruby: 'ruby-lang.org',
    Python: 'python.org',
    Perl: 'use.perl.org'
    }
    }

    纯量

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

    1. 字符;
    2. 布尔;
    3. 整数;
    4. 浮点;
    5. 空值;
    6. 时间;
    7. 日期。

    使用一个例子来快速了解纯量的基本使用:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    boolean: 
    - true
    - false
    float:
    - 3.14
    - 6.8523015e+5
    int:
    - 123
    - 0b1010_0111_0100_1010_1110
    null:
    nodeName: 'node'
    parent: ~
    string:
    - 'Hello world'
    - newline
    newline2
    date:
    - 2020-03-25
    datetime:
    - 2020-03-25T00:00:00+08:00

    引用

    AND 符用来建立锚点,双小于表示合并到当前数据,星号用来引用锚点:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    defaults: &defaults
    adapter: postgres
    host: localhost
    development:
    database: myapp_development
    <<: *defaults
    test:
    database: myapp_test
    <<: *defaults

    上面的代码相当于:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    defaults:
    adapter: postgres
    host: localhost
    development:
    database: myapp_development
    adapter: postgres
    host: localhost
    test:
    database: myapp_test
    adapter: postgres
    host: localhost

    下面是另一个例子:

    1
    2
    3
    4
    5
    - &showell Steve 
    - Clark
    - Brian
    - Oren
    - *showell

    转换为 JavaScript 代码如下:

    1
    [ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]


沪ICP备19023445号-2号
友情链接