如何将 YAML 文件解析为 Java 类

迈克尔·帕切科

我有一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将 OpenApi.NET 中的 yaml 扩展解析为 .NET 类?

如何将复杂的YAML解析为Java对象层次结构(Spring Boot配置)

Java-将Yaml解析为Json

无法将 yaml 文件解析为 python

Java:如何将字符串解析为不同的指定类

如何将没有键名的JSON数据解析为Java类结构?

如何通过Java(SnakeYaml)解析Yaml文件

如何将Java或类文件转换为exe文件

如何将Java线程同步为嵌套类?

如何将YAML文件解析/读入Python对象?

如何将日期时间从文件解析为C ++中的类

如何使用Jackson将Color java类解析为JSON?

如何将YAML文件读入哈希

如何将数据写入yaml文件

Java如何将一个类定义或检测为可序列化的类?

公开:如何将JSON解析为Entity类

Android Java;如何将资产文件夹中的本地JSON文件解析为ListView

通过 ruby 将 yaml 文件内容解析为 scss

如何将Python Script(py)文件解析为Java POJO?

在Java中,如何将XML解析为字符串而不是文件?

如何将Groovy文件的Java注释解析为html格式?

如何将文件数据存储为类对象?

如何将Google Engine app.yaml配置为始终解析为https

如何将Java类添加到jar文件中的文件夹

如何将具有多个泛型的可怕抽象Java类重构为“更好”的东西?

如何将类设置为div

如何将硬编码的JDBC连接属性移出Java类并移入属性文件?

如何将GUI文件作为Java中另一个类的线程运行?

无法将数据解析为Java中的类