YAML(/ˈjæməl/,尾音类似 camel 骆驼)是一个可读性高,用来表达数据序列化的格式。YAML 参考了其他多种语言,包括: C 语言、 Python、Perl,并从 XML、电子邮件的数据格式(RFC 2822)中获得灵感。Clark Evans 在 2001 年首次发表了这种语言 ,另外 Ingy döt Net 与 Oren Ben-Kiki 也是这语言的共同设计者 。当前已经有数种编程语言或脚本语言支持(或者说解析)这种语言。
YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写。在开发的这种语言时, YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言,但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
功能
YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态。 它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和 YAML 非常接近)。尽管它比较适合用来表达层次结构式(hierarchical model)的数据结构,不过也有精致的语法可以表示关系性(relational model)的数据。由于 YAML 使用空白字符和分行来分隔数据,使得它特别适合用 grep/Python/Perl/Ruby 操作。其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构时会变得复杂而难以辨认。
基本用法
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配置:
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
list
my:
servers:
- dev.bar.com
- foo.bar.com
my.servers[0]=dev.bar.com
my.servers[1]=foo.bar.com
map
bean.strstrmap[key1]: value1
bean.strstrmap[key2]: value2
bean.strobjmap[key2]:
value2Prop1: xxx
value2Prop2: yyy
注释
#comment
--- 表示一个文档的开始
server:
address: 192.168.1.2
---
spring:
profiles: dev
server:
address: 127.0.0.1
---
spring:
profiles: stg
server:
address: 192.168.1.3