YAML(/ˈjæməl/,尾音相似 camel 駱駝)是一個可讀性高,用來表達數據序列化的格式。YAML 參考了其餘多種語言,包括: C 語言、 Python、Perl,並從 XML、電子郵件的數據格式(RFC 2822)中得到靈感。Clark Evans 在 2001 年首次發表了這種語言 ,另外 Ingy döt Net 與 Oren Ben-Kiki 也是這語言的共同設計者 。當前已經有數種編程語言或腳本語言支持(或者說解析)這種語言。css
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一種標記語言)的遞歸縮寫。在開發的這種語言時, YAML 的意思實際上是:"Yet Another Markup Language"(還是一種標記語言,但爲了強調這種語言以數據作爲中心,而不是以標記語言爲重點,而用反向縮略語重命名。html
YAML 的語法和其餘高級語言相似,而且能夠簡單表達清單、散列表,標量等數據形態。 它使用空白符號縮進和大量依賴外觀的特點,特別適合用來表達或編輯數據結構、各類配置文件、傾印調試內容、文件大綱(例如:許多電子郵件標題格式和 YAML 很是接近)。儘管它比較適合用來表達層次結構式(hierarchical model)的數據結構,不過也有精緻的語法能夠表示關係性(relational model)的數據。因爲 YAML 使用空白字符和分行來分隔數據,使得它特別適合用 grep/Python/Perl/Ruby 操做。其讓人最容易上手的特點是巧妙避開各類封閉符號,如:引號、各類括號等,這些符號在嵌套結構時會變得複雜而難以辨認。python
environments: dev: url: http://dev.bar.com name: Developer Setup prod: url: http://foo.bar.com name: My Cool App
name: My Cool App
等同於如下properties配置:spring
environments.dev.url=http://dev.bar.com environments.dev.name=Developer Setup environments.prod.url=http://foo.bar.com environments.prod.name=My Cool App
my: servers: - dev.bar.com - foo.bar.com
等同於:編程
my.servers[0]=dev.bar.com my.servers[1]=foo.bar.com
bean.strstrmap[key1]: value1 bean.strstrmap[key2]: value2 bean.strobjmap[key2]: value2Prop1: xxx value2Prop2: yyy
#comment
能夠用於定義不一樣的profile數據結構
server: address: 192.168.1.2 --- spring: profiles: dev server: address: 127.0.0.1 --- spring: profiles: stg server: address: 192.168.1.3