如何从 YAMLConfiguration 中读取列表
How to read a list from a YAMLConfigutation
我有一个如下所示的 YAML 文件:
foo:
bar:
- entry1: 1
entry2: a
- entry1: 2
entry2: b
(实际列表要长得多。)我正在使用 Apache Configuration2 的 YAMLConfiguration
阅读此文件。我可以看到 Apache Configuration2 中使用的内部数据结构中的数据,但我不知道如何得到这个列表。我实际上有一个 class 匹配列表元素的结构,这是我真正想读入的内容:
class MyListEntry {
public int entry1;
public String entry2;
}
如何将数据 YAMLConfiguration
放入 List<MyListEntry>
?
这是我找到的解决方案(注意这适用于任何 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);
}
我有一个如下所示的 YAML 文件:
foo:
bar:
- entry1: 1
entry2: a
- entry1: 2
entry2: b
(实际列表要长得多。)我正在使用 Apache Configuration2 的 YAMLConfiguration
阅读此文件。我可以看到 Apache Configuration2 中使用的内部数据结构中的数据,但我不知道如何得到这个列表。我实际上有一个 class 匹配列表元素的结构,这是我真正想读入的内容:
class MyListEntry {
public int entry1;
public String entry2;
}
如何将数据 YAMLConfiguration
放入 List<MyListEntry>
?
这是我找到的解决方案(注意这适用于任何 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);
}