YAML 语法规范

YAML的文件后缀为.yml

  1. #格式为key: value,冒号后面要加一个空格
  2. #即表示url属性值;
  3. url: http://www.wolfcode.cn
  4. #可以使用缩进表示层级关系,即表示key.child-key属性的值;
  5. #缩进只能使用空格,不能使用TAB,不要求空格个数
  6. key:
  7. child-key: value
  8. child-key2: value2
  9. #也可以写为
  10. key: {child-key: value, child-key2: value2}
  11. #使用一个短横线加一个空格代表一个数组项
  12. hobby:
  13. - Java
  14. - LOL
  15. # 数组行内表示
  16. animal: ["mango","apple","banana"]
  17. #一个相对复杂的例子
  18. #相当于:companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]
  19. companies:
  20. -
  21. id: 1
  22. name: company1
  23. price: 200W
  24. -
  25. id: 2
  26. name: company2
  27. price: 500W
  28. # 相当于:services:{web:{build:.,links:["db:database"]},db:{image: postgres}}
  29. services:
  30. web:
  31. build: .
  32. links:
  33. - "db:database"
  34. db:
  35. image: postgres
  36. #常量
  37. boolean:
  38. - TRUE #true,True都可以
  39. - FALSE #false,False都可以
  40. float:
  41. - 3.14
  42. - 6.8523015e+5 #可以使用科学计数法
  43. int:
  44. - 123
  45. - 0b1010_0111_0100_1010_1110 #二进制表示
  46. null:
  47. nodeName: 'node'
  48. parent: ~ #使用~表示null
  49. string:
  50. - 哈哈
  51. - 'Hello world' #可以使用双引号或者单引号包裹特殊字符
  52. - newline
  53. newline2 #字符串可以拆成多行,每一行会被转化成一个空格
  54. date:
  55. - 2018-02-17 #日期必须使用ISO 8601格式,即yyyy-MM-dd
  56. datetime:
  57. - 2018-02-17T15:02:31+08:00 #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

引用

& 锚点和 * 别名,可以用来引用:

  1. defaults: &defaults
  2. adapter: postgres
  3. host: localhost
  4. development:
  5. database: myapp_development
  6. <<: *defaults
  7. 相当于:
  8. defaults:
  9. adapter: postgres
  10. host: localhost
  11. development:
  12. database: myapp_development
  13. adapter: postgres
  14. host: localhost

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

  1. - &showell Steve
  2. - Clark
  3. - Brian
  4. - Oren
  5. - *showell
  6. 相当于:
  7. [ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]

|、|+、|-、>

  1. |: 代表每一行的末尾都会添加一个换行符\n
  2. |+:文中自动换行 + 文末新增两空行
  3. |-:和|一样,但是最后一行不添加换行符\n
  4. >: 只在最后一行添加换行符\n