java 如何从嵌套在LinkedHashMap中的ArrayList中获取值?

aydmsdu9  于 2022-11-27  发布在  Java
关注(0)|答案(1)|浏览(251)

我目前有一个yaml文件,看起来像这样:

description: this-apps-config
options:
  - customer: joe
    id: 1
    date: 2022-01-01
    print: False
  - customer: jane
    id: 2
    date: 2022-01-02
    print: True

我能够在使用snakeyaml中成功地读取此内容:

Yaml yaml = new Yaml();
InputStream inputStream = new FileInputStream(new File("file.yml"));
Map<String, Object> data = yaml.load(inputStream);
System.out.println(data);

上面的代码以LinkedHashMap的形式检索所有内容,其中options是另一个HashMap的ArrayList,如下所示:

{description=this-apps-config, options=[{customer=joe, id=1, date=2022-01-01, print=False}, {customer=jane, id=2, date=2022-01-02, print=True}]}

我的问题是,如何得到每个options中的print值?

ArrayList<Object> al = new ArrayList<>()
al.add(data.get("options"))

这只得到了第一个options数组列表,不知道如何深入。
谢谢

u5rb5r59

u5rb5r591#

YAML允许您将文件加载到自定义类中,并支持其他类型字段的顶级类型,包括集合。请尝试以下操作:

public class MyYaml {

    private String description;
    private List<Customer> options;

    // getters and setters
}

public class Customer {

    private String customer;
    private int id;
    private Date date;
    private boolean print;

    // getters and setters
}

然后选择要加载文件的位置:

Yaml yaml = new Yaml();
InputStream inputStream = this.getClass()
 .getClassLoader()
 .getResourceAsStream("myFile.yaml");
MyYaml myYaml = yaml.load(inputStream);

Here是一个相关的教程,可能会对您有所帮助。

相关问题