解析YAML文件,而不在以前的版本中编写java类

解析YAML文件,而不在以前的版本中编写java类,java,parsing,yaml,Java,Parsing,Yaml,我想用Java编写一个YAML解析器,它能够解析不同格式的YAML文件。通常,我们会分析YAML并编写相应的java类,以便通过Jackson映射它们。然而,我希望有一个可插拔的体系结构,并考虑一种允许为某些YAML模式生成适配器的方法。最佳解决方案是在读取YAML时直接生成所需的java类 这有可能吗 编辑: 我重新思考了我的问题,得出了一个解决方案,即读取YAML文件并将其写入hashmap是解决这个问题的最合适的方法,而无需为每种格式编写静态java类,我想接受这一点 Yaml yaml

我想用Java编写一个YAML解析器,它能够解析不同格式的YAML文件。通常,我们会分析YAML并编写相应的java类,以便通过Jackson映射它们。然而,我希望有一个可插拔的体系结构,并考虑一种允许为某些YAML模式生成适配器的方法。最佳解决方案是在读取YAML时直接生成所需的java类

这有可能吗

编辑: 我重新思考了我的问题,得出了一个解决方案,即读取YAML文件并将其写入hashmap是解决这个问题的最合适的方法,而无需为每种格式编写静态java类,我想接受这一点

Yaml yaml = new Yaml();
InputStream inputStream = this.getClass()
    .getClassLoader()
    .getResourceAsStream("templates/template.yml");
Map<String, Object> templateMap = yaml.load(inputStream);
我想用Java编写一个YAML解析器,它能够解析不同格式的YAML文件

该解析器与Jackson使用的最流行的JavaYAML解析器SnakeYAML有何不同?我不是说不要这样做,但要知道你的问题可能已经解决了

通常,我们会分析YAML并编写相应的java类,以便通过Jackson映射它们

那么你想写的东西就不是解析器了。解析器是将原始输入数据转换为抽象语法树的组件。顺便说一下,Jackson是YAML之上的抽象API,它还提供JSON和XML支持。如果您希望以独占方式处理YAML,通常最好直接使用SnakeYAML

然而,我希望有一个可插拔的体系结构,并考虑一种允许为某些YAML模式生成适配器的方法

看看SnakeYAML的API。它允许您指定某个类作为加载YAML文件的目标。该类基本上用作输入的YAML模式。这意味着SnakeYAML是一个解析器,它不知道目标模式,但为用户提供了指定模式的方法。这不正是你想要的吗

最佳解决方案是在读取YAML时直接生成所需的java类

您正在运行时读取YAML。类是编译时用于定义数据布局和类型层次结构的工具,有助于类型检查和封装等。通常,在运行时生成类是没有意义的


总而言之:你到底想做什么还不清楚。也许试着用一个例子来描述你想要解决的问题。您的问题的基本答案是:是的,当然可以在不知道目标类的情况下编写YAML解析器;SnakeYAML就是证明。

我发现这个问题有一个简单的解决方案。我已经用相应的代码片段编辑了我的问题@弗利克斯的回答让我意识到了这一点。