Java解析yaml文件
Java解析yaml文件
1. 什么是yaml ?
参考下方链接
yaml快速入门
2. 导入maven依赖
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.26</version>
</dependency>
3. yaml 案例文件
name: steven
phone: 18********5
company: "******"
teamMember:
- 于**
- 徐**
- 索**
hobbies:
foods:
- 黄焖鸡米饭
- 黄焖排骨
- 五花肉
- 热干面
sports:
- 羽毛球
- 骑车
- 跑步
works:
- coding
- repairComputer
working-skills:
- Java
- Hadoop
- hive
- spark
- flink
- kafka
- HBASE
4. 示例代码
import org.yaml.snakeyaml.Yaml;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
public class 解析yaml {
public static void main(String[] args) throws FileNotFoundException {
// 1. 使用流关联yml配置文件
BufferedReader br = new BufferedReader(new FileReader(解析yaml.class.getClassLoader().getResource("testyaml.yaml").getPath()));
// 2. 创建yaml工具类
Yaml yaml = new Yaml();
// 3. 使用yaml工具类加载 流
// 返回的字符形式非常类似于JSON, 但又不是JSON, 因为返回的字符之间使用的是 = 号连接的
// 可以直接转换为Map 进行处理, key 的类型是 字符串, value的类型为Object
Map<String, Object> objectMap = (Map<String, Object>) yaml.load(br);
// 4. 以下就是获取yaml文件中的内容, 可以通过遍历map的方式获取, 也可以按照kv的形式获取
// 获取所有的key
Set<String> keySet = objectMap.keySet();
// 通过 key 获取value
for (String key : keySet) {
System.out.println(key + "\t : " + objectMap.get(key).toString());
}
// 获取单值
Object name = objectMap.get("name");
System.out.println(name);
// 获取数组类型
ArrayList<String> teamMember = (ArrayList<String>) objectMap.get("teamMember");
for (String member : teamMember) {
System.out.println(member);
}
// 获取复合对象 , 注意类型为 LinkedHashMap
LinkedHashMap<String, ArrayList<String>> hobbies = (LinkedHashMap<String, ArrayList<String>>) objectMap.get("hobbies");
for (Map.Entry<String, ArrayList<String>> listEntry : hobbies.entrySet()) {
System.out.println(listEntry.getKey() + " : " + listEntry.getValue());
}
}
}
5. 解析结果
name : steven
phone : 18********5
company : ******
teamMember : [于**, 徐**, 索**]
hobbies : {foods=[黄焖鸡米饭, 黄焖排骨, 五花肉, 热干面], sports=[羽毛球, 骑车, 跑步], works=[coding, repairComputer]}
working-skills : [Java, Hadoop, hive, spark, flink, kafka, HBASE]
steven
于**
徐**
索**
foods : [黄焖鸡米饭, 黄焖排骨, 五花肉, 热干面]
sports : [羽毛球, 骑车, 跑步]
works : [coding, repairComputer]
欢迎大家留言一起讨论学习!