天天看點

yaml格式介紹

1.yaml介紹

​ yaml是一種簡潔的非标記語言,以資料為中心,使用空白,縮進,分行組織資料,

基本文法

  1. 大小寫敏感
  2. 使用縮進表示層級關系,不允許使用Tab,隻能使用空格
  3. 縮進的空格數不重要,隻要相同層級的元素左對齊即可
  4. ‘#’表示注釋

    資料類型

    1. 對象:鍵值對的集合,又稱為映射(mapping)/哈希(hashes)/字典(dictionary)
    2. 數組:一組按次序排列的值,又稱為序列(sequence)/清單(list),數組對象“-” 後面也要加一個空格
    3. 純量(scalars):單個的,不可再分的值

    YAML對象

    1. 對象鍵值對使用冒号結構表示key:value,冒号後面要加一個空格
    2. 也可以使用key: {key: value1,key2: value2,…}(類似python字典嵌套)
    3. 也可以使用縮進表示層級關系
      key:
          child-key:value
          child-key2:value2
                 
    較為複雜的資料格式,也可以使用問号加空格來表示複雜的key,配合一個冒号加空格表示一個value
    ? 
        - key1
        - key2
    : 
    	- value
    	- value2
               
    意思是:對象的屬性是一個數組[key1,key2],對應的值也是[value,value2]

    YAML數組

    ​ 以-開頭的行表示構成一個數組
    - a
    - b
    - c
               
    yaml支援多元數組,可以使用行内表示
    key: [value,value2,...]
               
    資料結構的子成員是一個數組,則可以在該項下面縮進一個空格.
    - 
     - a
     - b
     - c
               
    例子:a的屬性是一個數組,每一個資料元素都是由id,name,price組成
    a: 
       - 
         id: 1
         name: 2
         price: 3
       - 
       	 id: 2
       	 name: 3
       	 price: 4
    # 也可以流式的表示為
    a: [{id: 1,name: 2,price: 3},{id: 2,name: 3,price: 4}]
               

    複合結構

    數組和對象可以構成複合結構
    languages: 
          - Rudy
          - Perl
          - Python
    websites: 
          YAML: yaml.org
          Ruby: ruby-lang.org
          Python: python.org
          Perl: use.perl.org
               
    轉換為json格式為
    {
    languages:['Rudy','Perl','Python'],
    websites:{
    	  YAML: 'yaml.org',
          Ruby: 'ruby-lang.org',
          Python: 'python.org',
          Perl: 'use.perl.org
    }
    }
               

    純量

    ​ 純量是最基本的,不可再分的值包括:字元串,布爾值,整數,浮點數,Null,時間,日期.
    boolean: 
           - TRUE # true,True都可以
           - FALSE # false,False都可以
    float: 
           - 3.14
           - 6.8523e+5 # 可以使用科學計數法
    int: 
           - 123
           - 0b1010_0111_0100_1010_1110 # 二進制表示
    null: 
           nodeName: 'node'
           parent: ~ # 使用~ 表示null
    string: 
          -哈哈
          - 'Hello world' # 可以使用雙引号或者單引号包裹特殊字元
          - hello
           world  # 字元串可以拆分成多行,每一行都會被轉換為一個空格:hello world
    date: 
          - 2018-02-17  # 日期必須使用ISO8601格式,即yyyy-MM-dd
    datetime: 
          - 2018-02-17T15:02:31+08:00  # 時間使用ISO8601格式,時間和日期之間使用T連接配接,最後使用+表示時區
               

    引用

    &錨點和*别名,可以用來引用
    defaults: &defaults
        adapter: postgres
        host: localhost
     developemt: 
     database: myapp_development
     <<: *defaults
     
               
    &用來建立錨點,<<表示合并到目前資料,*用來引用錨點

繼續閱讀