YAML 入门教程
YAML 入門教程
概念
YAML 是一個可讀性高,用來表達數據序列化的格式。
YAML 的語法和其他高級語言類似,并且可以簡單表達清單、散列表,標量等數據形態。它使用空白符號縮進和大量依賴外觀的特色,特別適合用來表達或編輯數據結構、各種配置文件、傾印調試內容、文件大綱(例如:許多電子郵件標題格式和YAML 非常接近)。盡管它比較適合用來表達層次結構式(hierarchical model)的數據結構,不過也有精致的語法可以表示關系性(relational model)的數據。由于 YAML 使用空白字符和分行來分隔數據,使得它特別適 grep/Python/Perl/Ruby 操作。其讓人最容易上手的特色是巧妙避開各種封閉符號,如:引號、各種括號等,這些符號在嵌套結構時會變得復雜而難以辨認。
基本語法
- 大小寫敏感
- 使用縮進表示層級關系
- 縮進不允許使用tab,只允許空格
- 縮進的空格數不重要,只要相同層級的元素左對齊即可
- '#'表示注釋
YAML 轉 json 網站: https://nodeca.github.io/js-yaml/
YAML 支持以下幾種數據類型:
- 對象:鍵值對的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 數組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
- 純量(scalars):單個的、不可再分的值
鍵值對:
-
鍵值對用 key: value表示,冒號后面需要加一個空格;
-
也可以如下表示
map:# Unordered set of key: value pairs.Block style:Clark : EvansIngy : d?t NetOren : Ben-KikiFlow style: { Clark: Evans, Ingy: d?t Net, Oren: Ben-Kiki }對應json:
map: { 'Block style': { Clark: 'Evans', Ingy: 'd?t Net', Oren: 'Ben-Kiki' },'Flow style': { Clark: 'Evans', Ingy: 'd?t Net', Oren: 'Ben-Kiki' } }
數組:
數組以-加一個空格開頭
pairs:# Explicitly typed pairs.Block tasks: !!pairs- meeting: with team.- meeting: with boss.- break: lunch.- meeting: with client.Flow tasks: !!pairs [ meeting: with team, meeting: with boss ]? 對應的 json:
pairs: { 'Block tasks': [ [ 'meeting', 'with team.' ],[ 'meeting', 'with boss.' ],[ 'break', 'lunch.' ],[ 'meeting', 'with client.' ] ],'Flow tasks': [ [ 'meeting', 'with team' ], [ 'meeting', 'with boss' ] ] }復合實例講解:
--- shudent:user: tonysex: manscore:- math: !!str 100 # !!str 表示判斷為字符串類型- english: !!float 100.0 # !!float 表示判斷為浮點數類型- Chinese: 100fly: true # 布爾類型,也可以是falsefile: null # null 表示為空file0:birthday: 2022-01-01 10:00:00 # 時間格式為年月日用杠連接,時每秒用冒號連接pi: 314e-2 # 科學計數法,相當于314*10^-2book:pythonjavac++book1: >pythonjavac++book2: |pythonjavac++# --- # 創建另外一個文件 # ... # 表示文件結束對應的 json:
{ shudent: { user: 'tony',sex: 'man',score: [ { math: '100' }, { english: 100 }, { Chinese: 100 } ],fly: true,file: null,file0: null,birthday: Sat Jan 01 2022 18:00:00 GMT+0800 (中國標準時間),pi: 3.14,book: 'python java c++',book1: 'python java c++\n',book2: 'python\njava\nc++\n' } }總結
- 上一篇: 图灵测试知识
- 下一篇: JDBC的批处理和事务