java 读取 yaml

本文最后更新于 2024年4月26日 凌晨

1. pom.xml

1
2
3
4
5
6
7
8
9
10
11
12
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml -->
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.13.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.13.3</version>
</dependency>

2. 文件结构

1
2
3
4
5
6
7
8
9
.
├── Main.java
└── pojo
├── Config.java
├── Qq.java
├── Feishu.java
└── Dingtalk.java

config.yml

3. config.yml

yaml 中的层级关系,转化到 Java 中,类似于类的包裹

1
2
3
4
5
6
7
8
9
10
11
qq:
account:
key:

feishu:
account:
key:

dingtalk:
account:
key:

4. Main.java

1
2
3
4
5
public static void main(String[] args) throws Exception{
File f = new File("path_to_config.yml");
ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
Config config = objectMapper.readValue(f, Config.class);
}

5. Config.java

1
2
3
4
5
6
7
8
9
10
11
12
import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class Config {
// 确保变量名的大小写和 yaml 文件参数一致
private Qq qq;
private Feishu feishu;
private DingTalk dingtalk;
}

6. Qq/Feishu/Dingtalk.java

以 Qq.java 为例

1
2
3
4
5
6
7
8
9
10
11
import lombok.Getter;
import lombok.Setter;

import java.util.Arrays;

@Setter
@Getter
public class Qq {
private Long account;
private String key;
}

7. 注意点

  1. yaml 中 @ 等字符,可以使用单双引号包裹
  2. yaml 区分大小写

8. 参考

  1. YAML file read/parse and write in java| Latest tutorials: https://www.w3schools.io/file/yaml-java-read-write/

java 读取 yaml
https://blog.cc01cc.cn/2022/06/04/java-yaml/
作者
零一/cc01cc(zeo)
发布于
2022年6月4日
更新于
2024年4月26日
许可协议