Java解析yaml文件

时间:2025-04-04 21:25:03
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("").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()); } } }