为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 YAML 文件解析为 Java 类

如何将 YAML 文件解析为 Java 类

一只斗牛犬 2022-12-28 16:50:17
我有一个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 类?
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

首先,您必须将 SnakeYML 作为依赖项包含在 maven pom.xml 中。我在下面提供了 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 + '}';

  }

}

根据您的 Recipe 类测试代码。


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);

  }

}


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 234 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号