是否有一种方法可以从Scala Case类层次结构中获得JSON-Schema ?



我正在记录一个用Scala编写的内部REST API,不幸的是我们不能集成Swagger,所以现在我们要用内部解决方案来生成文档。我想生成一个JSON-Schema来显示获取资源时的响应。我只是想知道是否有任何捷径来做到这一点,利用已经建模的case类。

autoschema项目能够从Scala case类中导出JSON模式。你可以这样使用它:

case class MyType(myValue: Int)
AutoSchema.createSchema[MyType]

Maven工件似乎不再可用,但它是Github上可用的SBT项目,因此您可以复制源代码,构建Jar或将其作为SBT的依赖项添加到您的build.sbt中:

lazy val autoschemaProject =
  ProjectRef(uri("https://github.com/coursera/autoschema.git"), "autoschema")
lazy val root = (project in file(".")).dependsOn(autoschemaProject)

我用SBT 0.13.7测试了这个。注意,自动模式有自己的依赖项(主要是play-json 2.3.2),因此您可能需要更改它们的版本,以避免与您自己的项目依赖项发生版本冲突。

正如@mziccard所述,自动模式是可行的方法。然而,主存储库已经有一段时间没有活动了。我花了一些时间来创建它的分支,并更新它的依赖项和弃用的代码(在其他分支中完成的工作,我只是将它们合并在一起)。它现在发布在我的分叉下的maven central:

https://github.com/sauldhernandez/autoschema

你可以把它放在build.sbt:

libraryDependencies += "com.sauldhernandez" %% "autoschema" % "1.0.0"

最新更新