从.yaml生成POJO

时间:2017-12-20 13:52:30

标签: java spring-boot yaml

我正在寻找一种解决方案,它可以从给定的.yaml-Files中自动生成POJO类文件,但还没有找到类似的东西。 我无法想象它应该是自己编写这些类的唯一方法。

3 个答案:

答案 0 :(得分:2)

问题是YAML描述了对象,而不是。通常,您无法从给定的YAML文件自动派生POJO结构。举个例子,这个YAML:

one: foo
two: bar

在YAML中,这是一个带有标量键和值的映射。但是,将它映射到Java有多种可能性。这是两个:

HashMap<String, String>
class Root {
    String one;
    String bar;
}

要知道哪一个是正确的映射,您需要一个类似于XML的模式定义。遗憾的是,YAML目前没有提供定义架构的标准方法。因此,您可以通过编写YAML应反序列化的类层次结构来定义模式。

因此,与您的想法相反,编写POJO并不是一个可以自动化的多余操作,而是将YAML包含在您的应用程序中的重要步骤。

注意:如果您确实希望使用YAML定义某些数据布局,然后从中生成Java源代码,那当然是可能的。但是,您需要在描述中更精确地获得相关帮助。

答案 1 :(得分:2)

正如@Jack的评论中指出的那样,您可以使用在线工具:jsonschema2pojo将yaml文件样本转换为其等效的POJO类。该工具可以将json或yaml数据转换为相应的POJO类,而我过去已经成功使用了它。

也就是说,当您使用yaml文件(而不是yaml模式)时,该工具被迫做出某些“假设”。因此,在开始使用生成的类之前,先仔细查看它们是一个好主意。

您可以在其wiki页面上找到有关如何使用此在线工具的更多信息。

答案 2 :(得分:0)

您可以尝试使用https://editor.swagger.io/ 导入yaml文件后,您可以通过带有相应POJO类的菜单来生成Java REST Client项目。