转换。Yaml 在应用程序上自动转换为 Java 类

Convert .Yaml to Java Classes Automatically On Application

提问人:prince 提问时间:11/12/2023 最后编辑:Anish B.prince 更新时间:11/12/2023 访问量:37

问:

我正在将 Maven 与 Java 一起使用,并且有一个 .yaml 文件

data:
  users:
    id: "int"
    name: "string"
    email: "string"
    phone:
      - "string"
    address:
      line1: "string"
      line2: "string"
      zip: "int"
database:
  url: "any-dbs-url"
  username: "username"
  password: "password"

我想在应用程序启动时转换为Java类,这应该是一个自动过程,每次应用程序启动时都应该根据.yaml文件中的更改创建类。

我怎样才能实现它?任何建议、代码或源代码都将非常有帮助。

我尝试使用 snakeyaml 依赖项并手动创建了一个类。

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.21</version>
</dependency>

Yaml yaml = new Yaml();
InputStream inputStream = new FileInputStream("file location\\yml-file-name.yml");

ManualClass manualClass = yaml.loadAs(inputStream,ManualClass.class);
System.out.println("manualClass = " + manualClass);

但是手动为大量 yaml 文件创建类是不可行的。

java yaml 蛇类

评论

0赞 ndc85430 11/12/2023
您能谈谈您的应用吗?为什么有很多类要以这种方式实例化,而不仅仅是在应用程序中调用它们的构造函数?
0赞 Rob Spoor 11/13/2023
你可以试试Jackson: baeldung.com/jackson-yaml
0赞 prince 11/13/2023
@ndc85430我的应用程序对另一个应用程序的某些端点进行 GET 调用,在收到来自另一个应用程序的响应时,我需要检查该应用程序中的数据是否具有 .yaml 中提到的所有字段以及与之关联的类型。
0赞 Thomas W. 11/15/2023
因此,您的 yaml 充当架构。您的问题是,您得到了许多不同的 yaml,还是它们在运行时发生了变化(这意味着您在开发过程中甚至不知道它们)?
0赞 ndc85430 11/15/2023
我很困惑。你不是只有代码来反序列化响应,如果缺少某些字段,就会失败吗?在这种情况下,为什么需要 YAML?

答: 暂无答案