1.概述
本文,我们将学习如何使用SnakeYAML库将
YAML文档转换为Java对象,以及JAVA对象如何序列化为YAML文档。
2.项目设置
要在项目中使用SnakeYAML,需要添加Maven依赖项(可在此处找到最新版本):
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.25</version>
</dependency>
复制代码
3.入口点
该YAML
类是API的入口点:
Yaml yaml = new Yaml()
复制代码
由于实现不是线程安全的,因此不同的线程必须具有自己的Yaml
实例。
4.加载YAML文档
SnakeYAML
支持从String
或InputStream
加载文档,我们从定义一个简单的YAML文档开始,然后将文件命名为customer.yaml
:
firstName: "John"
lastName: "Doe"
age: 20
复制代码
4.1 基本用法
现在,我们将使用Yaml
类来解析上述YAML文档:
Yaml yaml = new Yaml();
InputStream inputStream = this.getClass()
.getClassLoader()
.getResourceAsStream("customer.yaml");
Map<String, Object> obj = yaml.load(inputStream);
System.out.println(obj);
复制代码
上面的代码生成以下输出:
{firstName=John, lastName=Doe, age=20}
复制代码
默认情况下,load()
方法返回一个Map
对象。查询Map
对象时,我们需要事先知道属性键的名称,否则容易出错。更好的办法是自定义类型。
4.2 自定义类型解析
SnakeYAML