java 获取复杂格式的ym
时间: 2023-10-14 15:04:20 浏览: 139
ym_java_www.ym772.cpm_www.ym772_ym.772_ym772?com_
获取复杂格式的 YAML 文件可以通过递归的方式来实现。以下是一个示例代码,假设要获取 yml 文件中的所有 key:
```java
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;
import org.yaml.snakeyaml.nodes.Tag;
import org.yaml.snakeyaml.representer.Representer;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Map;
public class YamlParser {
public static void main(String[] args) throws IOException {
// 加载 yml 文件
Yaml yaml = new Yaml(new Constructor(), new Representer(), new DumperOptions());
File file = new File("config.yml");
FileInputStream inputStream = new FileInputStream(file);
Map<String, Object> obj = yaml.load(inputStream);
// 获取所有 key
getKeys(obj, "");
}
private static void getKeys(Object obj, String prefix) {
if (obj instanceof Map) {
Map<?, ?> map = (Map<?, ?>) obj;
for (Map.Entry<?, ?> entry : map.entrySet()) {
String key = entry.getKey().toString();
Object value = entry.getValue();
if (prefix.isEmpty()) {
getKeys(value, key);
} else {
getKeys(value, prefix + "." + key);
}
}
} else {
System.out.println(prefix + " = " + obj);
}
}
}
```
这个示例代码中,`getKeys` 方法采用递归的方式遍历 YAML 文件,如果当前对象是 Map 类型,则继续遍历它的值,直到找到最底层的值(即非 Map 类型)为止。如果找到了一个非 Map 类型的值,则输出它的 key 和 value。
注意,这里只是示例代码,实际使用时还需要根据具体的 yml 文件格式和需求进行修改。
阅读全文