首页 > 解决方案 > 如何从 YAMLConfigutation 中读取列表

问题描述

我有一个看起来像这样的 YAML 文件:

foo:
  bar:
    - entry1: 1
      entry2: a
    - entry1: 2
      entry2: b

(实际列表要长得多。)我正在使用 Apache Configuration2 的YAMLConfiguration. 我可以看到 Apache Configuration2 中使用的内部数据结构中的数据,但我不知道如何得到这个列表。我实际上有一个与列表元素的结构相匹配的类,这是我真正想读的:

class MyListEntry {
    public int entry1;
    public String entry2;
}

如何将数据YAMLConfiguration放入List<MyListEntry>?

标签: javayamljava-11apache-commons-config

解决方案


这是我找到的解决方案(注意这适用于任何HierarchicalConfiguration,而不仅仅是YAMLConfiguration

// this will return a list of List<HierarchicalConfiguration<ImmutableNode>>, one entry for each element of the list
var subConfigList = hierarchicalConfig.configurationsAt("foo.bar");

List<MyListEntry> myListEntries = new ArrayList<>(subConfigList.size());
// iterate over the subconfigs and pull out the specific values of interest
for(var subConfig : subconfigs) {
    MyListEntry myListEntry = new MyListEntry();
    myListEntry.entry1 = subConfig.getInt("entry1");
    myListEntry.entry2 = subConfig.getString("entry2");
    myListEntries.add(myListEntry);    
}

推荐阅读