当前位置: 首页 > 工具软件 > yaml-readme > 使用案例 >

【Yaml】了解yaml文件格式

鲜于玮
2023-12-01


一、简介

YAML 是一种较为人性化的数据序列化语言,可以配合目前大多数编程语言使用。

YAML 的语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML 更多应用于编写配置文件,其文件一般以 .yml 为后缀。

二、基本语法

1. 大小写敏感。 大小视作不同变量

version: 1.12
Version: 1.12

2. 使用#表示注释。只支持单行注释

# 这是注释内容
# 这是另一行注释内容
version: 1.12

3. 缩进表示层级关系使用空格缩进(不能使用Tab键), 缩进空格数量无所谓,但是必须保持左对齐

test: 
     # 缩进一
     value_1: 1
     value_2: 2
     value_3:
     					# 缩进二
     					value_3_1: 3_1
     					value_3_1: 3_1

三、数据类型

1. 字符串

  • 默认不需要引号包裹
    strings:
       - Hello without quote # 不用引号包裹
       - Hello
        world # 拆成多行后会自动在中间添加空格
       - 'Hello with single quotes' # 单引号包裹
       - "Hello with double quotes" # 双引号包裹
       - "I am fine. \u263A" # 使用双引号包裹时支持 Unicode 编码
       - "\x0d\x0a is \r\n" # 使用双引号包裹时还支持 Hex 编码
       - 'He said: "Hello!"' # 单双引号支持嵌套"
    

2. 布尔值

  • trueyes(不分大小写)为真 。 falseno(不分大小写)“No”和“NO”为假
    boolean:
       - true # True、TRUE
       - yes # Yes、YES
       - false # False、FALSE
       - no # No、NO
    

3. 数值类型

  • 包括整数类型和浮点类型
    int:
        - 666
        - 0001_0000 # 二进制表示
    
    float:
        - 3.14
        - 6.8523015e+5 # 使用科学计数法
    

3. 空类型

  • null Null ~都代表空,不指定默认值也为空
    kong:
         - null
         - Null
         - ~
         - 
    

4. 时间戳类型

  • 支持 ISO 8601格式的时间数据
    date1: 2020-05-26
    date2: 2020-05-26T01:00:00+08:00
    dete3: 2020-05-26T02:00:00.10+08:00
    date4: 2020-05-26 03:00:00.10 +8
    

5. 类型转换

  • 使用!!强制转换类型
    a: !!float '666' # !! 为严格类型标签
    b: '666' # 其实双引号也算是类型转换符
    c: !!str 666 # 整数转为字符串
    d: !!str 666.66 # 浮点数转为字符串
    e: !!str true # 布尔值转为字符串
    f: !!str yes # 布尔值转为字符串
    

四、数据结构

1. 对象 。 键值对应关系

  • 使用冒号+空格 :表示
     version: 1.12
    
  • 多层嵌套
    version: 
         major: 1
         minor: 12
    
  • 支持流式风格(Flow Style)。花括号包裹,逗号分隔
    # 正常风格
    version: 
         major: 1
         minor: 12
     # 流式风格
     version: {major: 1, minor: 2}
    
  • 使用?表示复杂对象,可以是任意类型
    # 正常类型
    version: 
       major: 1
       minor: 12
    # 复杂类型 这里使用数组做键 相当于{[version_1,version_2]: 1.12}
    ?
     - version_1
     - version_2
    : 1.12
    

``

2. 数组

  • 表示方式为破折号加空格
    # 相当于json的 {version: [major: 1, minor: 12]}
    version: 
         - major: 1
         - minor: 12
    
  • 支持内联格式(Inline Format)。方括号包裹,逗号加空格分隔
    # 相当于json的 {version: [major: 1, minor: 12]}
    # 正常格式
    version: 
         - major: 1
         - minor: 12
    # 内联格式
    version: [major: 1, minor: 12]
    
  • 多维数组(缩进表示层级关系)
    # 相当于json的 {version: [major: 1, minor: 12]}
    # 正常格式
    version: 
         - 
    	     - 1
    	     - 2
    	     - 3
         - 
    	     - 1
    	     - 2
    	     - 3
    # 内联格式
    version: [[1,2,3], [1,2,3]]
    

这里一些参考, 李

 类似资料: