当前位置: 首页 > 知识库问答 >
问题:

解析YAML文件

白泽语
2023-03-14

这是我第一次使用YAML文件,所以我首先想到的是找到任何可以帮助我解析文件的库。

我找到了两个库,YamlBean和snakeyaml。我不确定我要用哪一个。

下面是我试图解析的文件的一个示例

users:
  user1:
    groups:
    - Premium
  user2:
    groups:
    - Mod
  user3:
    groups:
    - default
groups:
  Mod:
    permissions:
      test: true
    inheritance:
    - Premium
  default:
    permissions:
      test.test: true
    inheritance:
    - Mod
  Admin:
    permissions:
      test.test.test: true
    inheritance:
    - Mod

该文件将动态更改,所以我不知道该文件将包含多少用户或组。

user1 Premium
user2 Mod
user3 default
Mod
default
Admin

有人能帮我开始吗?最好的图书馆是什么?YamlBean还是Snakeyaml?

我想,我需要将这些信息保存在一个可以轻松重复的东西中。

共有1个答案

廉元龙
2023-03-14

您还可以使用Jacksons YAML模块。

为了使用它,您需要几个类。将承载文件内容的模型类和负责读取YAML文件的a类。

根模型类可能如下所示:

public class MyYamlFile {
    @JsonProperty
    private List<User> users;
    @JsonProperty
    private List<Group> groups;

    // getter methods ommitted
}
public class User {
    @JsonProperty
    private List<String> name;
    @JsonProperty
    private List<GroupType> groups;

    // getter methods ommitted
}
public enum GroupType {
    Premium, Mod, Default
}
public MyYamlFile readYaml(final File file) {
    final ObjectMapper mapper = new ObjectMapper(new YAMLFactory()); // jackson databind
    return mapper.readValue(file, MyYamlFile.class);
}
File file = new File("path/to/my/yaml/usersAndGroups.yaml");

file不同,readvalue方法还支持inputstreamjava.io.readerstring(包含全部内容)、java.net.url和字节数组。你应该找到适合自己的东西。

(*)您应该考虑改变您的YAML文件的结构,因为我认为与Jackson一起使用动态键是不可能的(也许有人对此了解更多):

users: 
    - name: user1
      groups:
        - Premium
    - name: user2
      groups:
        - Mod
    - name: user3
      groups:
        - Default
groups:
    ....
 类似资料:
  • 问题内容: 这是我第一次使用YAML文件,因此我首先想到的是找到任何可以帮助我解析文件的库。 我发现了两个库YamlBean和SnakeYAML。我不确定我要使用哪一个。 这是我要解析的文件的示例: 该文件将动态更改,因此我不知道该文件将包含多少个用户或组。 我想从中获取的信息是用户名和类似的组: 并且仅从组中选择组名,如下所示: 有人可以让我从这里开始吗?最佳的库是什么?YamlBean或Sna

  • 问题内容: 我有一个yaml文件,当前写为: 但是,此yaml文件经常更改,因此每次可以使用不同的值添加新条目: 我从使用gopkg.in/yaml.v2包开始就知道,如果所有值都相同,我可以解析yaml文件,例如: 在上面的示例中,它仅适用于密钥/狗密钥,而不适用于其他密钥。 当新值经常添加到yaml文件中时,如何在Go中执行此操作? 谢谢 问题答案: 如果您现在不精确的结构,则应该使您的结构看

  • 问题内容: 如何在Python中解析YAML文件? 问题答案: 不依赖标头的最简单,最纯净的方法是(文档),可以通过以下方式安装: 就是这样。一个普通的函数也存在,但是除非你明确需要提供的任意对象序列化/反序列化,以避免引入执行任意代码的可能性,否则通常应首选该函数。

  • 本文向大家介绍Python3操作YAML文件格式方法解析,包括了Python3操作YAML文件格式方法解析的使用技巧和注意事项,需要的朋友参考一下 数据及配置文件之争 数据及文件通常有三种类型: 配置文件型:如ini,conf,properties文件,适合存储简单变量和配置项,最多支持两层,不适合存储多层嵌套数据 表格矩阵型:如csv,excel等,适合于存储大量同类数据,不适合存储层级结构的数

  • 问题内容: 我有以下程序,其中我需要使用以下结构来解析yaml: https://codebeautify.org/yaml- validator/cbabd352 这是 有效的Yaml ,我使用字节使​​其更简单,也许缩进在复制粘贴到问题的过程中已更改,但您可以在链接中看到yaml有效 YAML的有API_VERSION和亚军,每个转轮(关键是名字),我已经命令的列表,我需要打印这些命令和,我究

  • 问题内容: 如何将YAML文件解析/读入Python对象? 例如,此YAML: 对于此Python类: 我正在使用PyYAML。 问题答案: 如果您的YAML文件如下所示: 并且您已经这样安装: Python代码如下所示: 变量现在包含带有树数据的字典。如果使用PrettyPrint打印,则会得到类似以下内容的信息: 因此,现在我们已经了解了如何将数据获取到我们的Python程序中。保存数据同样简