您还可以使用Jacksons YAML模块。
为了使用它,您将需要一些类。 将携带文件内容的模型类,以及一个负责读取YAML文件的类。
根模型类如下所示:
public class MyYamlFile {
@JsonProperty
private List users;
@JsonProperty
private List groups;
// getter methods ommitted
}
User(*)类:
public class User {
@JsonProperty
private List name;
@JsonProperty
private List groups;
// getter methods ommitted
}
GroupType可以是包含所有可能的组类型的Enum:
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方法代替File,还支持InputStream、java.io.Reader、String(全部内容),java.net.URL和字节数组。您应该找到适合自己的东西。
(*)您应该考虑更改YAML文件的结构,因为我认为杰克逊无法使用动态密钥(也许有人对此有所了解):
users:
- name: user1
groups:
- Premium
- name: user2
groups:
- Mod
- name: user3
groups:
- Default
groups:
....