• 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
    ...
    
  • 相关阅读:
    对于java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I错误解决
    attempted to assign id from null one-to-one
    The class has no identifier property
    javax.servlet.ServletException: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
    final和static
    hibernate事务
    log4j:WARN Please initialize the log4j system properly.解决
    用最有效率的方法算出2乘以8等於几
    char型变量中能存贮一个中文汉字
    基本数据类型范围
  • 原文地址:https://www.cnblogs.com/hujingnb/p/15734608.html
Copyright © 2020-2023  润新知