我有一个Recipe
代表这个 YAML 块的类:
id: Ex1
uses:
- Database: ["D1", "D2"]
- MetaFeature: ["M1", "M2"]
- Algorithm: ["A1", "A2"]
- Config: ["C1", "C4"]
public class Recipe {
private String id;
private HashMap<String, HashSet<String>> uses;
}
有没有办法将这个 YAML 解析为 Recipe 类而不创建其他类或做一些技巧?
首先,您必须在 maven pom.xml 中包含 SnakeYML 作为依赖项。我在下面提供了snakeyml的maven依赖。
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.21</version>
</dependency>
如果您没有使用 Maven,您可以从以下链接下载 jar 文件。http://central.maven.org/maven2/org/yaml/snakeyaml/1.21/snakeyaml-1.21.jar
我修改了您的 yml 文件位以使其正常工作。在下面找到 yml 文件的结构。
id: Ex1
uses:
Database: ["D1", "D2"]
MetaFeature: ["M1", "M2"]
Algorithm: ["A1", "A2"]
Config: ["C1", "C4"]
让我为您提供正在运行的代码。
import java.util.HashMap;
import java.util.HashSet;
public class Recipe {
private String id;
private HashMap<String, HashSet<String>> uses;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public HashMap<String, HashSet<String>> getUses() {
return uses;
}
public void setUses(HashMap<String, HashSet<String>> uses) {
this.uses = uses;
}
@Override
public String toString() {
return "Recipe{" + "id='" + id + '\'' + ", uses=" + uses + '}';
}
}
根据您的食谱类测试代码。
import org.yaml.snakeyaml.Yaml;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Map;
public class TestYml {
public static void main(String[] args) throws Exception {
Yaml yaml = new Yaml();
InputStream inputStream =
new FileInputStream("your location\\yml-file-name.yml");
Recipe recipe = yaml.loadAs(inputStream,Recipe.class);
System.out.println("recipe = " + recipe);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句