與其他標記語言類似,YAML希望為存儲復雜的結構化數據提供壹種標準格式。YAML設計師希望YAML能滿足以下條件:
* *用法:** YAML常用於數據交換和存儲,尤其是當這些數據需要人和機器同時訪問時。例如配置文件和模型元數據文件。
從上面可以看出,YAML要解決的問題其實和XML、JSON等技術是壹樣的。有了XML和JSON,為什麽還需要YAML呢?
我覺得在機器處理上,XML和JSON應該不會有太大的缺點。最大的問題是方便人們處理,比如XML。人們在任何數據的前後加壹個標簽都太繁瑣了。
XML格式的描述
YAML格式的描述顯然對人們更友好。
註意:另外,對於嵌套的數據結構,YAML支持類似Python的方法,使用縮進代替Json或XML的各種括號或標簽,大大提高了可讀性。
實驗地址:http://nodeca.github.io/js-yaml/.
註意:上面的網站提供了將YAML轉換成JSON的在線工具。
在開始介紹YAML的詳細語法之前,我們先來看壹個描述幾門編程語言課程和教師信息的例子。讓我們來看看。即使妳不知道YAML語法,妳能猜出下面YAML解釋的是什麽嗎?
這是在YAML使用#的行註釋。
基本類型包括字符串型、數值型、布爾型、空型、日期和時間型等。
默認行為:壹個字符串可以寫多行,從第二行開始必須有壹個空格縮進。換行符被轉換成空格。
相當於json {str:'這是壹個多行字符串' }
保留換行符:|
相當於json {str:'這是\n壹個多行字符串\n'}
折疊和包裝: >
相當於json {str:'這是壹個多行字符串\n'}
是否保留最後壹個換行符:+(保留最後壹個換行符)-(刪除最後壹個換行符)
相當於json {str:'這是壹個多行字符串\ n \ n ',str 2:'這是壹個多行字符串' }
用true或false表示bool值,用~表示null值。
整數或者浮點數,直接用文字描述就可以了,比如12或者3.1415926。
日期由復合iso8601格式的年、月和日表示。
時間采用ISO8601格式。
YAML允許兩個!!指示強制類型轉換,如將bool類型轉換為string類型。
更復雜的數據類型包括數組和鍵/值對。
鍵-值對是分開的(註意:冒號後面應該加壹個空格),多個鍵/值對可以用來描述壹個對象,比如
連接線開頭的連續行形成壹個數組,例如
YAML支持嵌套數據結構的兩種方式。