学习资料

链接:http://www.ruanyifeng.com/blog/2016/07/yaml.html

优势

yaml 的精髓我觉得是引用,这样可以使用面向对象的组合思想。

语法检查工具

  • 在线工具:https://yaml-online-parser.appspot.com/

    数据结构

    YAML 支持的数据结构有三种。
    • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
    • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
    • 纯量(scalars):单个的、不可再分的值

对象

  1. animal: pets

数组

一组连词线开头的行,构成一个数组。

  1. - Cat
  2. - Dog
  3. - Goldfish

纯量

  • 字符串
  • 布尔值
  • 整数
  • 浮点数
  • Null
  • 时间
  • 日期

    强制类型转化

    YAML 允许使用两个感叹号,强制转换数据类型。
    1. e: !!str 123
    2. f: !!str true

    引用

    锚点&和别名*,可以用来引用。
    1. defaults: &defaults
    2. adapter: postgres
    3. host: localhost
    4. development:
    5. database: myapp_development
    6. <<: *defaults
    7. test:
    8. database: myapp_test
    9. <<: *defaults

    实战

    对象的值是数组且使用了引用

    email_accounts 的 value 是一个数组。数组中的元素是一个对象,这个对象使用了 「引用」。
    如下写法有毛病, email 不必须要的:
    1. common: &common
    2. email_ssl: &email_ssl
    3. host: smtp.mxhichina.com
    4. port: !!str 465
    5. password: Qwe123456_
    6. email_accounts:
    7. - email:
    8. <<: *email_ssl
    9. username: booleandatamsg@shouxin168.com
    10. - email:
    11. <<: *email_ssl
    12. username: booleandatamsg002@shouxin168.com
    13. - email:
    14. <<: *email_ssl
    15. username: booleandatamsg003@shouxin168.com
    16. - email:
    17. <<: *email_ssl
    18. username: booleandatamsg004@shouxin168.com
    19. - email:
    20. <<: *email_ssl
    21. username: booleandatamsg005@shouxin168.com
    正确写法, 下面这种写法才是我想要的:
    1. common: &common
    2. project_name: message
    3. url_prefix: /message/api
    4. log_file: /var/log/message/message.log
    5. hmac: he23udendife4f3fe4n!
    6. mongodb_uri: mongodb://root:shouxin168_mg@dds-uf6ecf5cc83911641262-pub.mongodb.rds.aliyuncs.com:3717,dds-uf6ecf5cc83911642699-pub.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-17015893
    7. guard_developer_aes_key: vo8N6ZPawqLDhGj7
    8. guard_developer_pri_key: /etc/guard_v2/guard_develop.rsa
    9. guard_developer_uuid: 01b20490-4a1e-11e9-9eb7-247703d210dc
    10. guard_prod_url: https://guard.shouxin168.com/api/lightning/product/query
    11. log_formatter: json
    12. lighting_mysql_uri: lgt:Qwe123456@tcp(rm-uf6xfyemz1085v2a4.mysql.rds.aliyuncs.com)/lighting
    13. redis_url: r-uf67b5cbffd85a24.redis.rds.aliyuncs.com:6379/6
    14. email_ssl: &email_ssl
    15. host: smtp.mxhichina.com
    16. port: !!str 465
    17. password: Qwe123456_
    18. email_accounts:
    19. -
    20. <<: *email_ssl
    21. username: booleandatamsg@shouxin168.com
    22. -
    23. <<: *email_ssl
    24. username: booleandatamsg002@shouxin168.com
    25. -
    26. <<: *email_ssl
    27. username: booleandatamsg003@shouxin168.com
    28. -
    29. <<: *email_ssl
    30. username: booleandatamsg004@shouxin168.com
    31. -
    32. <<: *email_ssl
    33. username: booleandatamsg005@shouxin168.com