YAML

来自牛奶河Wiki
阿奔讨论 | 贡献2024年6月18日 (二) 14:55的版本 (创建页面,内容为“YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写,或者是:"Yet Another Markup Language"(仍是一种标记语言)。 YAML 可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

YAML 是 "YAML Ain't a Markup Language"(YAML 不是一种标记语言)的递归缩写,或者是:"Yet Another Markup Language"(仍是一种标记语言)。

YAML 可以简单表达清单、散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件、倾印调试内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。

语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进只允许空格
  • 相同层级的元素左对齐
  • # 表示注释

数据类型

对象

键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

key1: 
  key11: value1
  key12: value2
-> key1: {key11: value1, key12: value2}

key1: 
  key11:
    key111: value
-> key1: {key11: {key111: value}}
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
key:
  - value1
  - value2

-> key: [value1, value2]

复杂对象

?  
  - key1
  - key2
:
  - value1
  - value2
-> [key1, key2]: [value1, value2]

组合对象

obj:
  - id: 101
    name: A1
    price: 200
  - id: 102
    name: C2
    price: 100
-> obj: [{id: 101, name: A1, price: 200}, {id: 102, name: C2, price: 100}]
  • 纯量(scalars):单个的、不可再分的值

引用

& 用来建立锚点,<< 表示合并到当前数据,* 用来引用锚点。

db1: &db1
  adapter:  postgres
  host:     localhost
dev:
  database: myapp_development
  <<: *db1
test:
  database: myapp_test
  <<: *db1