YAML簡單用法

目錄

1 YAML 簡單介紹

2 YAML基本語法

3 YAML 組織結構

4 YAML數據類型

5 YAML 對象

5.1 使用 “:”(冒號) + 空格表示單個鍵值對

5.2 使用"{}"表示一個鍵值表

5.3 "? " 問號+空格表示複雜的鍵

6  YAML數組

7 YAML複合結構

8 YAML純量

9 YAML特殊用法

9.1 一般用!!(雙歎號)做類型轉換

9.2 多行字符串可以使用|保留換行符,也可以使用>摺疊換行。

9.3  +表示保留文字塊末尾的換行,-表示刪除字符串末尾的換行。

9.4 布爾值用true和false表示。

10 錨點&和別名*,可以用來引用,定義數據的複用

11 參考鏈接:


1 YAML 簡單介紹

        YAML,即YAML Ain’t Markup Language的縮寫,YAML 是一種簡潔的非標記語言。YAML以數據爲中心,使用空白,縮進,分行組織數據,從而使得表示更加簡潔易讀。
        yaml文件其實也是一種配置文件類型,相比較ini,conf配置文件來說,更加的簡潔,操作也更加簡單,同時可以存放不同類型的數據,不會改變原有數據類型,所有的數據類型在讀取時都會原樣輸出,yaml文件依賴python的第三方庫PyYaml模塊
        YAML 是 "YAML Ain't a Markup Language"(YAML 不是一種標記語言)的遞歸縮寫。在開發的這種語言時,YAML 的意思其實是:"Yet Another Markup Language"(仍是一種標記語言)。
        YAML 的語法和其他高級語言類似,並且可以簡單表達清單、散列表,標量等數據形態。它使用空白符號縮進和大量依賴外觀的特色,特別適合用來表達或編輯數據結構、各種配置文件、傾印調試內容、文件大綱(例如:許多電子郵件標題格式和YAML非常接近)。YAML 的配置文件後綴爲 .yml,如:runoob.yml 。

yaml在線轉換JavaScript

http://nodeca.github.io/js-yaml/

2 YAML基本語法

  • 大小寫敏感
  • 使用縮進表示層級關係
  • 禁止使用tab縮進,只能使用空格鍵
  • 縮進長度沒有限制,只要元素對齊就表示這些元素屬於一個層級。
  • 使用#表示註釋
  • 字符串可以不用引號標註

3 YAML 組織結構

YAML 文件可以由一或多個文檔組成(也即相對獨立的組織結構組成),文檔間使用“---”(三個橫線)在每文檔開始作爲分隔符。同時,文檔也可以使用“...”(三個點號)作爲結束符(可選)。如果只是單個文檔,分隔符“---”可省略。

4 YAML數據類型

YAML 支持的數據結構有三種:

  • 對象:鍵值對的集合,又稱爲映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 數組:一組按次序排列的值,又稱爲序列(sequence) / 列表(list)
  • 純量(scalars):單個的、不可再分的值

5 YAML 對象

5.1 使用 “:”(冒號) + 空格表示單個鍵值對

對象鍵值對使用冒號結構表示 key: value,冒號後面要加一個空格。

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

還可以使用縮進表示層級關係;

key: 
    child-key: value
    child-key2: value2

5.2 使用"{}"表示一個鍵值表

items: {no: 1234, descript: cpu, price: ¥800.00}

5.3 "? " 問號+空格表示複雜的鍵

"? " 問號+空格表示複雜的鍵。當鍵是一個列表或鍵值表時,就需要使用本符號來標記。

 # 使用一個列表作爲鍵
 ? [blue, reg, green]: Color
 # 等價於
 ? - blue
   - reg
   - gree
 : Color

6  YAML數組

使用一個短橫線加一個空格代表一個數組項:

hobby:
    - Java
    - LOL

當然也可以有這樣的寫法:

-
  - Java
  - LOL

可以簡單理解爲:

[ [ 'Java', 'LOL' ] ]

數組的理解:

PaymentDetail:
  - billPaymentNo: "201904171022507929513877465876"
  - paymentAmount: 1000.00
  - paymentMethod1: "ODD"
  - paymentSuccessDate: 2019-04-17 13:00:00

轉爲 JavaScript 如下:

{ PaymentDetail: null,
  '  - billPaymentNo': '201904171022507929513877465876',
  '  - paymentAmount': 1000,
  '  - paymentMethod1': 'ODD',
  '  - paymentSuccessDate': Wed Apr 17 2019 21:00:00 GMT+0800 (中國標準時間) }

理解爲:PaymentDetail值爲一個列表,列表中有四個元素,其中每個元素都是一個字典,每個字典中只有一個鍵值對

PaymentDetail1:
  - billPaymentNo: "201904171022507929513877465876"
    paymentAmount: 1000.00
    paymentMethod1: "ODD"
    paymentSuccessDate: 2019-04-17 13:00:00

轉爲 JavaScript 如下:

{ PaymentDetail1: null,
  '  - billPaymentNo': '201904171022507929513877465876',
  '    paymentAmount': 1000,
  '    paymentMethod1': 'ODD',
  '    paymentSuccessDate': Wed Apr 17 2019 21:00:00 GMT+0800 (中國標準時間) }

理解爲:PaymentDetail1值爲一個列表,列表中只有一個元素,該元素爲一個字典,字典由多個鍵值對構成

7 YAML複合結構

對象和數組可以結合使用,形成複合結構。

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

轉爲 JavaScript 如下:

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

8 YAML純量

字符串
布爾值
整數
浮點數
Null
時間
日期

9 YAML特殊用法

9.1 一般用!!(雙歎號)做類型轉換

string:
    - !!str 54321
    - !!str true

轉爲 JavaScript 如下:

{ string: [ '54321', 'true' ] }

9.2 多行字符串可以使用|保留換行符,也可以使用>摺疊換行。

this: |
  Foo
  Bar
that: |
  Foo
  Bar

轉爲 JavaScript 代碼如下:

{ this: 'Foo\nBar\n', that: 'Foo\nBar\n' }

9.3  +表示保留文字塊末尾的換行,-表示刪除字符串末尾的換行。

s1: |
  Foo
s2: |+
  Foo 
s3: |-
  Foo

轉爲 JavaScript 代碼如下:

{ s1: 'Foo\n', s2: 'Foo \n', s3: 'Foo' }

9.4 布爾值用true和false表示。

NULL用~表示

10 錨點&和別名*,可以用來引用,定義數據的複用

第一步:使用 “&” 定義數據錨點(即要複製的數據)

第二步:使用 “*” 引用上述錨點數據(即數據的複製目的地)

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

&用來建立錨點(defaults),<<表示合併到當前數據,*用來引用錨點。

11 參考鏈接:

https://www.runoob.com/w3cnote/yaml-intro.html

https://www.cnblogs.com/pandaly/p/10321464.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章