您也可以使用
Jacksons YAML module。
为了使用,你需要几个课程。将携带文件内容的模型类和一个负责阅读YAML文件的类。
根模型类可能如下所示:
public class MyYamlFile() {
@JsonProperty
private List users;
@JsonPropery
private List groups;
// getter methods ommitted
}
User(*)类:
public class User() {
@JsonProperty
private List name;
@JsonProperty
private List groups;
// getter methods ommitted
}
GroupType可以是包含所有可能的组类型的枚举:
public enum GroupType {
Premium, Mod, Default
}
不要忘记枚举条目区分大小写。所以“溢价”不行。
你可以这样构建所有的模型类。每个子条目应该得到一个自己的模型类。
现在到可以读取YAML文件的部分:
public MyYamlFile readYaml(final File file) {
final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); // jackson databind
return mapper.readValue(file, MyYamlFile.class);
}
正如你所看到的,这部分真的很整洁,因为你不需要太多的东西。该文件实例包含您的YAML文件。你可以创建一个这样的:
File file = new File("path/to/my/yaml/usersAndGroups.yaml");
而不是文件,readValue方法也支持InputStream,java.io.Reader,String(包含整个内容),java.net.URL和byte数组。
你应该找到适合你的东西。
(*)你应该考虑改变你的YAML文件的结构,因为我不认为可以使用动态键与杰克逊(也许有人知道更多):
users:
- name: user1
groups:
- Premium
- name: user2
groups:
- Mod
- name: user3
groups:
- Default
groups:
....