zoukankan      html  css  js  c++  java
  • yaml语法

    最近在写配置的时候, 发现很多配置文件都是用yaml语法, 比如docker-composer k8s等等. 因此整理一下yaml语法以备后续翻阅. 其实很简单, 一眼看上去和json类似.

    可以通过网站校验yaml语法是否符合规则: https://www.bejson.com/validators/yaml_editor/

    基本语法

    • 使用空格进行缩进(tab 不行)

    • 缩进的空格数目随意, 左侧对其即可.

    • 语法分割的冒号:和逗号,后面必须跟空格

      • 正因如此, 字符串可以直接写成这样: 1234,5678
    • #为整行注释

    数据结构

    哈希

    # 第一种写法, 同级元素整合为一个对象
    hash1: 
      name: Xiaoming
      age: 15
    # 第二种写法, 也可以写到一行
    hash2: {name: XiaoMing, age: 15}
    # 当哈希的 key 或 Value 是一个符合类型的时候. 可以使用 ? : 配合的方式. 
    # 不过这玩意应该用不到吧,没有谁会写这么个配置
    hash3: 
      ?
        name: XiaoMing
        age: 15
      : 
        address: BeiJing
      ? 
        name: LiMing
        age: 20
    

    没了, 简单吧.

    数组

    # 第一种写法, 使用中横线`-`分割的同级元素, 整合为一个数组
    list1: 
      - value1
      - value2
    # 第二种写法, 也可以写到一行
    list2: [value1, value2]
    

    基本类型

    # 基础类型直接写就行
    number: 12.30
    # 可以使用科学记数法表示
    number2: 2.352145e+5
    # 二进制表示法
    number3: -b1010_0010
    # 布尔值. true/false
    isMan: true
    # ~ 标识 null
    parent: ~
    # 时间使用 ISO8601 gesh格式标识
    isoTime: 2021-12-26T14:45:03.394Z
    isoDate: 2021-12-26
    # 使用 !! 强制转换数据类型
    # 内置类型包括: int, float, bool, str, binary(字符串), timestamp(时间), null, set, omap(哈希列表), pairs(哈希列表), seq(列表), map(哈希)
    str1: !!str 1234
    str2: !!str true
    

    字符串

    其中字符串应该是使用场景最多的了.

    # 默认直接写即可
    # 注意, 若存在特殊字符会被转义
    str1: 一行字符串
    # 字符串中包含特殊字符或空格时, 需要使用引号包裹
    str2: '空 格'
    # 当单引号包裹的字符串中存在单引号, 要使用两个单引号进行转义
    str3: '包含单''引号'
    # 注意, 双引号字符串不会对字符串进行转义
    str4: "空\n格"
    # 写成多行的字符串, 从第二行开始要有缩进. 
    # 注意, 这种方式, 会将行尾的换行转为空格. 故结果还是一行
    str5: 多行字符串
      第二行
      第三行
    # 在字符串前面添加标识符可标识不同的情况: 
    # `|` 保留行尾换行符, 也会保留末尾的换行
    # `>` 不保留行尾换行符, 但会保留末尾的换行. 若中间需要换行符, 留空行即可. 
    # `|+` 保留末尾的换行, 也是默认行为
    # `|-` 不保留末尾的换行
    # `>+` 
    # `>-`
    str6: |
      添加标识符号的
      前面对其的缩进会被会被去掉
        但是, 已经对其的缩进差异会被保留. 比如这一行
    

    符合类型

    以上所有类型可以混合使用. 等等吧, 大家都懂得

    # 数组的元素是哈希
    list: 
      - name: Name1
        age: 10
      - name: Name2
        age: 20
    # 哈希的值是数组
    hash: 
      hashList: [V1, V2]
    

    特殊用法

    锚点复制

    用于对相同的内容进行复用.

    names: 
      - name: &name1 XiaoMing
      # 这里引用上方的锚点, 既 &name1
      - name: *name1
    # 复制对象
    user1: &user1
      name: XiaoMing
      age: 20
    user2: 
      # 引用对象的值. << 表示将内容合并到当前. 
      # 其想过相当于: user3
      <<: *user1
      # 可以覆写引用的内容
      age: 30
    user3: 
      name: XiaoMing
      age: 30
    

    标记分割

    可以将多个yaml配置写入到同一个文件中.

    ---
    name: XiaoMing
    # 三个点表示一个配置文件的结束
    ...
    # 三个中横线标识一个配置文件的开头
    #  一般使用`---`就可以不用再额外写 `...` 了
    ---
    name: LiMing
    ...
    
  • 相关阅读:
    织梦开发——相关阅读likeart应用
    织梦标签教程
    织梦专题调用代码
    HIT 2543 Stone IV
    POJ 3680 Intervals
    HIT 2739 The Chinese Postman Problem
    POJ 1273 Drainage Ditches
    POJ 2455 Secret Milking Machine
    SPOJ 371 Boxes
    HIT 2715 Matrix3
  • 原文地址:https://www.cnblogs.com/hujingnb/p/15734608.html
Copyright © 2011-2022 走看看