YAML 文件中不同格式的含义详解

YAML (YAML Ain’t Markup Language) 是一种人类可读的数据序列化格式,以下是 YAML 中常见格式及其含义的详细说明:

1. 键值对 (Key-Value Pairs)

最基本的元素,表示一个属性和它的值

name: John Doe  # 字符串值
age: 30         # 数字值
is_active: true # 布尔值

2. 列表/数组 (Lists/Arrays)

用短横线 - 表示列表项

fruits:
  - Apple
  - Banana
  - Orange

3. 嵌套结构

通过缩进表示层级关系

person:
  name: Alice
  address:
    street: 123 Main St
    city: Anytown
    zip: 12345

4. 多行字符串

有三种表示方式:

保留换行符 (|)

description: |
  This is a multi-line
  string that preserves
  line breaks.

折叠换行符 (>)

description: >
  This is a multi-line
  string where line breaks
  are converted to spaces.

纯量块 (无符号)

description: This is a \
  single line string with \
  escaped line breaks.

5. 锚点与引用 (&*)

用于避免重复定义

defaults: &defaults
  adapter: postgres
  host: localhost

development:
  <<: *defaults  # 合并defaults内容
  database: dev_db

6. 数据类型表示

字符串 (默认不需要引号)

name: John
quoted: "需要引号的字符串"  # 包含特殊字符时需要

数字

integer: 123
float: 3.14
scientific: 1.23e+4

布尔值

true_value: true   # 或 True, TRUE
false_value: false # 或 False, FALSE

null 值

null_value: null   # 或 Null, NULL, ~

时间戳

datetime: 2025-05-30T10:55:20Z
date: 2025-05-30

7. 特殊格式

流式集合 (Flow Style)

{}[] 表示紧凑格式

person: {name: John, age: 30}
colors: [red, green, blue]

标签 (Tags)

显式指定数据类型

not-date: !!str 2025-05-30
binary-data: !!binary |
  R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5
  OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+
  +f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLCAgjoEwn
  uNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=

8. 文档分隔符

用于分隔多个YAML文档

---
# 文档1
name: Doc1
...
---
# 文档2
name: Doc2

重要注意事项

  1. 缩进:必须使用空格(通常2个),不能使用Tab
  2. 大小写敏感keyKey 是不同的
  3. 特殊字符:包含 :, {, }, [, ], ,, &, * 等字符的字符串需要引号
  4. 注释:以 # 开头,到行尾结束

YAML vs JSON 对应关系

YAML 格式JSON 等效
key: value{"key": "value"}
- item1["item1"]
parent: {child: value}{"parent": {"child": "value"}}

YAML 的这些格式特性使其非常适合用于配置文件(如Kubernetes、Docker Compose等),比JSON更易读和编写。

### YAML 文件中 `hm` 的用途与示例 在给定的引用材料中,未直接提及 `hm` 这一特定关键词的具体含义或用法。然而,在引用[2]中提到了日志配置文件 `shared-log.yaml` 中的内容[^2]。此部分展示了如何通过 YAML 配置来设置日志级别、日期格式以及日志存储路径等内容。 如果假设 `hm` 是指代某个模块或者组件(例如 `com.hmall`),那么其可能的作用是在应用程序中定义该模块的日志记录行为。以下是基于通用实践的一个推测性解释: #### 日志配置中的 `hm` 在实际开发过程中,开发者可能会针对不同的包名或类名设定独立的日志等级以便于调试和监控程序运行状态。例如,在上述提到的 `shared-log.yaml` 文件里设置了如下内容: ```yaml logging: level: com.hmall: debug ``` 这里明确了对于名为 `com.hmall` 的 Java 包及其子包下的所有类,默认采用 DEBUG 级别的日志输出模式。这意味着任何来自这些类内部发出的消息只要达到或超过 DEBUG 层级都会被打印出来供分析人员查看。 #### 示例代码片段展示如何加载并应用此类配置项 下面给出一段简单的 Spring Boot 应用启动时自动读取外部资源目录下指定名称 YML/Properties 类型属性文件作为全局参数的一部分实现方法: ```java @SpringBootApplication @PropertySource(value="classpath:/config/shared-log.yaml", ignoreResourceNotFound=true, factory=YamlPropertySourceFactory.class) public class Application { public static void main(String[] args){ SpringApplication.run(Application.class,args); } } ``` 其中需要注意的是我们自定义了一个工厂类 `YamlPropertySourceFactory` 来支持正确解析 `.yaml` 后缀形式的数据源而非默认仅限 `.properties`. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

python自动化工具

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

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

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

打赏作者

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

抵扣说明:

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

余额充值