YAML文件簡介
我們可能在spring配置文件里見到過.yml格式的東東,配置文件不都是.propertie或者.xml文件嗎?.yml是什么鬼,今天我帶你們來一探究竟。
YAML(Yet Another Markup Language)(發音 /ˈjæməl/ )
一種基於Unicode容易閱讀,容易和腳本語言交互的,用來表達資料序列的編程語言。
適應場景
- 腳本語言:由於實現簡單,解析成本很低,YAML 特別適合在腳本語言中使用
- 序列化: YAML是由宿主語言數據類型直轉,的比較適合做序列化。
- 配置文件:寫 YAML 要比寫 XML 快得多(無需關注標簽或引號),並且比 INI 文檔功能更強。由於兼容性問題,不同語言間的數據流轉建議不要用 YAML。
語言優點
- YAML易於人們閱讀。
- YAML數據在編程語言之間是可移植的。
- YAML匹配敏捷語言的本機數據結構。
- YAML具有一致的模型來支持通用工具。
- YAML支持單程處理。
- YAML具有表現力和可擴展性。
- YAML易於實現和使用。
YAML 語法
- 使用空格 Space 縮進表示分層,不同層次之間的縮進可以使用不同的空格數目,但是同層元素一定左對齊,即前面空格數目相同(不能使用 Tab,各個系統 Tab對應的 Space 數目可能不同,導致層次混亂)
- ‘#’表示注釋,只能單行注釋,從#開始處到行尾
- 破折號后面跟一個空格(a dash and space)表示列表
- 用冒號和空格表示鍵值對 key: value
- 簡單數據(scalars,標量數據)可以不使用引號括起來,包括字符串數據。用單引號或者雙引號括起來的被當作字符串數據,在單引號或雙引號中使用C風格的轉義字符
Sequence of Scalars 簡單數據列表
- - Mark McGwire
- - Sammy Sosa
- - Ken Griffey
Mapping Scalars to Scalars 簡單數據鍵值對以及注釋
- hr: 65 # Home runs
- avg: 0.278 # Batting average
- rbi: 147 # Runs Batted In
Mapping Scalars to Sequences 簡單數據列表鍵值對
- american:
- - Boston Red Sox
- - Detroit Tigers
- - New York Yankees
- national:
- - New York Mets
- - Chicago Cubs
- - Atlanta Braves
Sequence of Mappings 鍵值對列表
- -
- name: Mark McGwire
- hr: 65
- avg: 0.278
- -
- name: Sammy Sosa
- hr: 63
- avg: 0.288
YAML 還支持流類型,用中括號括起來表示列表,用逗號分隔元素;用大括號括起來表示鍵值對,用逗號分隔元素。
Sequence of Sequences 列表的列表
- - [name , hr, avg ]
- - [Mark McGwire, 65, 0.278]
- - [Sammy Sosa , 63, 0.288]
Mapping of Mappings 鍵值對的鍵值對
- Mark McGwire: {hr: 65, avg: 0.278}
- Sammy Sosa: {
- hr: 63,
- avg: 0.288
- }
yaml 官方網站:http://www.yaml.org
yaml 官方文檔:http://www.yaml.org/spec/1.2/spec.html