首頁>Club>
3
回覆列表
  • 1 # 不忘初心繼續前進144738137

    參考了YAML官網

    YAML是專注於寫配置檔案的語言,這個名字的含義是YAML Ain"t Markup Language(YAML不是一種標記語言),但是實際上YAML還是一種標記語言,只不過是更加聚焦於資料的標記語言。

    YAML的基本語法規則

    大小寫敏感

    使用縮排表示層級關係(這個和Python很像了,估計是從Python借鑑的)

    縮排時絕對不允許使用Tab鍵,只允許使用空格鍵

    縮排的空格數不重要,只要元素左側能對齊就可以。

    字串可以不用引號標註

    YAML完全相容Json的語法,可以把Json看做是YAML的一個子集

    我們來看一下YAML支援的資料型別

    物件:就是鍵值對的集合,和Json中物件的概念一樣

    列表:又稱為序列,是一組有序排列的值,和Json中列表的概念一樣

    scalars(純量):不可拆分的資料型別,和Json中的基本資料型別一樣

    來看一下YAML具體的語法。

    在一個yml檔案中,使用---來表示一段文件(或者一組配置)的開始,使用...來表示一段文件的結束。如果yml中只有一組配置,則可以省略掉---.

    使用#來表示註解

    使用-來表示單個的列表項,比如

    - A

    - B

    - C

    對應Json中的[ "A", "B", "C" ]

    對應於Json的[ [ "A", "B", "C" ], [ "D", "E", "F" ] ]

    尤其是要注意,由於YAML相容Json的語法,所以我們直接在yml檔案中寫[ [ A, B, C ], [ D, E, F ] ]也是可以的。

    使用:來表示鍵值對

    name: chico

    age: 18

    對應Json的{ name: "chico", age: 18 }

    -

    name: chico

    age: 18

    -

    name: dong

    age: 19

    對應Json中的[ { name: "chico", age: 18 }, { name: "dong", age: 19 } ]

    看一個將列表和物件結合起來的

    american:

    - Boston Red Sox

    - Detroit Tigers

    - New York Yankees

    national:

    - New York Mets

    - Chicago Cubs

    - Atlanta Braves

    對應Json { american: [ "Boston Red Sox", "Detroit Tigers", "New York Yankees" ], national: [ "New York Mets", "Chicago Cubs", "Atlanta Braves-" ] }

    與Json不同的是,YAML中鍵值對的鍵不要求一定是字串,可以是一些複雜的型別,但是Json中要求鍵值對的鍵必須是字串。

    當YAML中鍵值對的鍵是複雜型別的時候,必須要用?說明,比如

    ?[a,b,c]:color

    #或者

    ?-a

    -b

    -c

    :color

    YAML中null用~表示

    比如money:~

    YAML中段落用|和縮排表示,YAML會保留該段落中的回車換行符

    比如

    description: |

    #注意:和 |之間的空格

    這是一篇非常非常長的介紹YAML的文章

    文章是非常有內容的

    YAML中用>和縮排表示把段落連城一句話,YAML會把該段落中的回車換行替換成空格,最終連成一句話

    description: >

    這是一篇介紹YAML的文章,非常長

    但是把他們連成一句話了

    a: |+

    保留了換行符

    b: |-

    YAML中也會把"雙引號和"單引號中的字串連成一行,引號中可以包含跳脫字元

    description:

    "雖然表面上看這是兩行,

    但其實是一行"

    #和下面這個是一樣的

    description:

    雖然表面上看這是兩行,

    但其實是一行

    YAML中使用!和!!來做強制型別轉換

    比如

    #強行把123轉換成str

    e:!!str 123

    #強行把boolean型轉換為str

    b:!!str true

    YAML中可以透過&來錨點,透過*來引用

    s1:

    name: chico

    favourite: &SS reading

    s2:

    name: dong

    favourite: *SS

    <<表示追加

    比如

    default: &&default

    host: http

    path:index

    server1:

    name:server1

    <<:*default

    server2:

    name:server2

    <<:*default

    等價於

    default: &&default

    host: http

    path:index

    server1:

    name:server1

    host: http

    path:index

    server2:

    name:server2

    host: http

    path:index

    YAML還支援set和ordered map

    在YAML中set就是一組值全部為null的鍵值對,比如

    --- !!set #強行轉換為set

    ? hahaha

    ? chico dong

    ? haha lala

    對應的json是{ hahaha: null, "chico dong": null, "haha lala": null }

    在YAML中ordered map就是一組有序的鍵值對(可以認為是放在list中的鍵值對),

    比如

    --- !!omap #強行轉換為有序鍵值對

    - hahaha: haha

    - chico dong: dong

    - lala: "haha lala"

    對應的Json為[ { hahaha: "haha" }, { "chico dong": "dong" }, { lala: "haha lala" } ]

    感覺這個和正常的yaml巢狀寫法沒什麼區別

  • 中秋節和大豐收的關聯?
  • 人類的發明創造作文大全450字?