• yaml编写规则以及YAML和JSON对比


    yaml编写规则

    重点理解,是同一个层级的map,看:,还是同一个层级的list,看-

    K8S yaml参考案例:https://blog.csdn.net/qq_47058489/article/details/124455930
    yaml和json对比参考案例:https://bbs.huaweicloud.com/blogs/298709
    在线转换工具:https://tooltt.com/yaml2json/

    规则1.

    yaml使用一个固定的缩进风格表示数据层结构关系.

    salt需要每个缩进级别由两个空格组成.

    不允许使用tabs.

    规则2.

    用冒号表示key:value.注意,每个冒号后面都有一个空格.

    规则3.

    想要表达列表项,使用一个短横杠加一个空格.多个项使用同样的缩进级别座位同一列表的一部分.

    my_dictionary:
      - list_value_one
      - list_value_two
      - list_value_three
    等同于下面的结构
    {"my_dictionary":["list_value_one","list_value_two","list_value_three"]}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    YAML

    YAML(YAML Ain’t Markup Language),YAML 是一种简洁的非标记语言
    1、YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。

    2、YAML是一种可读的文本的数据结构,它的设计目标是使人们容易读,程序容易处理。它类似XML,但是比XML简单。广泛用于配置文件,日志文件,跨语言数据共享,对象持久化,复杂的数据结构。

    3、YAML 的配置文件后缀为 .yml,如:libai.yml 。

    大小写敏感
    使用缩进表示层级关系
    禁止使用tab缩进,只能使用空格键
    缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级
    使用#表示注释
    字符串可以不用引号标注

    JSON

    JSON(JavaScript Object Notation):JavaScript 对象表示法
    简单来说JSON是一种数据格式,和数组作用一样,用于存储数据。

    数据在名称/值对中
    数据由逗号分隔
    大括号保存对象
    中括号保存数组

    三种数据结构

    1、map,散列表

    使用冒号(:)表示键值对,同一缩进的所有键值对属于一个map
    示例:

    # YAML表示
    age : 12
    name : huang
    
    # 对应的Json表示
    {'age':12,'name':'huang'}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    也可以将一个map写在一行:

    # YAML表示
    {age:12,name:huang}
    
    # 对应的Json表示
    {'age':12,'name':'huang'}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2、list,数组

    使用连字符(-)表示:

    # YAML表示
    - a
    - b
    - 12
    
    # 对应Json表示
    ['a','b',12]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    也可以写在一行:

    # YAML表示
    [a,b,c]
    
    # 对应Json表示
    [ 'a', 'b', 'c' ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、scalar,纯量

    数据最小的单位,不可以再分割。

    字符串
    布尔值
    整数
    浮点数
    Null
    时间
    日期
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    boolean: 
        - TRUE  #true,True都可以
        - FALSE  #false,False都可以
    float:
        - 3.14
        - 6.8523015e+5  #可以使用科学计数法
    int:
        - 123
        - 0b1010_0111_0100_1010_1110    #二进制表示
    null:
        nodeName: 'node'
        parent: ~  #使用~表示null
    string:
        - 哈哈
        - 'Hello world'  #可以使用双引号或者单引号包裹特殊字符
        - newline
          newline2    #字符串可以拆成多行,每一行会被转化成一个空格
    date:
        - 2021-06-20   #日期必须使用ISO 8601格式,即yyyy-MM-dd
    datetime: 
        -  2021-06-20T15:02:31+08:00    #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    数据结构嵌套

    map和list的元素可以是另一个map或者list或者是纯量。由此出现4种常见的数据嵌套

    1、map嵌套map

    # YAML表示
    websites:
     YAML: yaml.org 
     Ruby: ruby-lang.org 
     Python: python.org 
     Perl: use.perl.org 
    
    # 对应Json表示
    { websites: 
       { YAML: 'yaml.org',
         Ruby: 'ruby-lang.org',
         Python: 'python.org',
         Perl: 'use.perl.org' } }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    2、map嵌套list

    # YAML表示
    languages:
     - Ruby
     - Perl
     - Python 
     - c
    
    # 对应Json表示
    { languages: [ 'Ruby', 'Perl', 'Python', 'c' ] }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3、list嵌套list

    # YAML表示
    -
      - Ruby
      - Perl
      - Python 
    - 
      - c
      - c++
      - java
    
    # 对应Json表示
    
    ```handlebars
    [ [ 'Ruby', 'Perl', 'Python' ], [ 'c', 'c++', 'java' ] ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    除此以外,还可以如下表示该结构

    # 方法2
    - - Ruby
      - Perl
      - Python 
    - - c
      - c++
      - java
    
    # 方法3
    - [Ruby,Perl,Python]
    - [c,c++,java]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    4、list嵌套map

    # YAML表示
    -
      id: 1
      name: huang
    -
      id: 2
      name: liao
    
    # 对应Json表示
    [ { id: 1, name: 'huang' }, { id: 2, name: 'liao' } ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    6️⃣总结
    要简洁同时功能强大,请用YAML, 要在不同语言中交换、共享数据,请用JSON。

  • 相关阅读:
    Linux下git和gdb的使用
    Spring中@Value的三种使用方式
    二元分类模型评估方法
    套接口发送缓存队列统计与控制
    Swagger
    痞子衡嵌入式:聊聊i.MXRT1xxx上第三级启动保障 - SDMMC manufacture模式
    ChinaSkills技能大赛网络系统管理Debian模块(样题一)||SERVER01 TASK配置
    Day814.电商系统表设计优化案例分析 -Java 性能调优实战
    【前端网页】CSS样式表进阶之盒子模型
    嵌入式养成计划-45----QT--事件机制--定时器事件--键盘事件和鼠标事件--绘制事件
  • 原文地址:https://blog.csdn.net/qq_15821487/article/details/125888569