YAML语法,YAML是什么,YAML有什么用

本文介绍了YAML(YAMLAintMarkupLanguage)的概述、基本语法,包括缩进、键值对、注释、列表、字典等,以及高级特性如锚点和引用、自定义数据类型、文件包含,以及在Spring框架中的应用,如多配置文件合并和随机数生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、什么是YAML

二、YAML的语法

1、缩进

2、键值对

3、注释

4、列表

5、字典(映射)

6、多行字符串

7、折叠文本块

8、引号

9、特殊值

三、YAML高级特性

1、锚点和引用(配套使用)

2、自定义数据类型(自定义类型一般都要自定义解析器)

3、包含其他文件

四、合并多配置文件

五、Spring中的高级配置


 

  官网地址:The Official YAML Web Site

一、什么是YAML

        YAML(YAML Ain't Markup Language)是一种轻量级的标记语言,用于表示数据的序列化格式。YAML 的设计目标是提供一种易读且容易写的数据格式,同时具有清晰的结构。它通常用于配置文件、数据交换、配置管理和其他需要人类可读性的应用场景。

person:
  name: John Doe
  age: 30
  address:
    street: 123 Main St
    city: Anytown
    state: CA

        在上面的示例中,person 是一个映射(字典),包含 name、age 和 address 三个字段。address 字段又是一个嵌套的映射,包含 street、city 和 state 三个字段。

二、YAML的语法

1、缩进

        YAML 使用空格来表示数据结构的层次结构,而不使用大括号或其他分隔符。缩进的空格数通常是 2 或 4 个,但必须一致使用。缩进表示嵌套关系。

parent:
  child:
    grandchild: value

2、键值对

        键值对使用冒号分隔,键和值之间可以有一个或多个空格。键通常是字符串,但也可以是非字符串标量。

key: value

3、注释

        注释以 # 开头,可以出现在行的任何位置,但必须以 # 开头。

# 这是一个注释
key: value  # 这也是注释

4、列表

        列表使用 - 符号表示,后跟一个空格。列表项可以是任何数据类型,包括字符串、数字、字典等。

items:
  - item1
  - item2
  - item3

5、字典(映射)

        字典或映射使用 key: value 形式表示,其中 key 是键,value 可以是任何数据类型,包括字符串、数字、嵌套字典等。

person:
  name: John Doe
  age: 30

6、多行字符串

        YAML 支持多行字符串,可以使用 | 或 > 字符来表示。| 保留换行符,> 将多行字符串转换为单行,但保留了换行符。

description: |
  This is a
  multiline
  string.

7、折叠文本块

        使用 > 符号可以将多行文本块转换为单行,并在保留换行符的同时删除开头的空格。

description: >
  This is a
  folded
  text block.

8、引号

        YAML 中的字符串可以使用单引号 ' 或双引号 " 包裹,但不是必需的,除非字符串包含特殊字符。双引号内的字符串支持转义字符。

single_quoted: 'This is a single-quoted string'
double_quoted: "This is a double-quoted string with a newline:\nHello"

9、特殊值

        YAML 支持几个特殊值,包括布尔值(true 和 false)、空值(null 或 ~)和不可用值(undefined)。

boolean_values:
  - true
  - false
null_value: null

三、YAML高级特性

1、锚点和引用(配套使用)

(1)锚点(Anchor):锚点是一种用于标记 YAML 文档中特定部分的标签。你可以使用 & 后跟锚点名称来创建锚点。

(2)引用(Alias):引用是用 * 后跟锚点名称来引用锚点的值。引用允许你在不重复键值对的情况下多次使用相同的值。

person: &details
  name: John Doe
  age: 30
employee1: *details
employee2: *details

        在上面的示例中,&details 创建了一个名为 details 的锚点,然后 *details 引用了 details 锚点,用于创建多个相同的键值对。也就是employee1、employee2下属的值与person相同。

2、自定义数据类型(自定义类型一般都要自定义解析器)

        YAML 支持自定义标签,允许你指定如何解释特定的数据类型。你可以使用 ! 后跟标签名称来指定自定义数据类型。

date: !date 2023-09-12

        在上面的示例中,!date 是一个自定义标签,表示日期类型,后面的值 2023-09-12 是日期的实际值。解析 YAML 时,你可以使用自定义的解析器来处理这个类型。

3、包含其他文件

        YAML 允许你在一个文件中包含其他文件,这对于组织复杂的配置或数据非常有用。你可以使用 !include 标签指定要包含的文件。

        第一个YAML文件为main.yaml

# main.yaml
included_data: !include included.yaml

        另一个文件为included.yaml

# included.yaml
some_data:
  - item1
  - item2

        在上面的示例中,main.yaml 包含了 included.yaml 文件中的数据。解析 YAML 时,可以将这两个文件合并处理。

        注意:在使用高级特性时,需要编写或使用相应的解析器来正确处理锚点和引用、自定义数据类型以及包含其他文件。不同的编程语言和库提供不同的支持和方式来处理这些特性。因此,具体的实现方式取决于你使用的编程语言和库。

四、合并多配置文件

        将不同配置文件放一个ymal中,使用“ --- ”分割。

server:     
  port: 8881
spring:
  profiles:
     active:
      - prod

 ---

spring:     
  profiles: test
server:     
  port: 8882
test:
  name: app
  desc: ${server.port} is run

 ---

spring:
  profiles: dev
server:     
  port: 8082

 ---

spring:
  profiles: prod
server:     
  port: 8083

五、Spring中的高级配置

1、随机数

        有些特殊需求,如不希望设置的属性值是一个固定值,可以使用${radom}在配置中产生随机int,long或是string。

        ${random.int()} = 随机int

        ${random.long} = 随机long

        ${random.int(50)} = 50以内的随机数

        ${random.int(50,100)} = 50~100之间的int随机数

        ${random.value}= 随机字符串

yaml配置文件中的写法:

com.yiqifu.test1=${random.int(50,100)}

com.yiqifu.test2=${random.value}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QIFU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值