有没有办法从Scala Case Class层次结构中获取JSON-Schema?

时间:2013-05-27 20:08:12

标签: json scala

我正在记录用Scala编写的内部REST API,遗憾的是我们无法集成Swagger,所以现在我们正在使用doc生成器的内部解决方案。 我想生成一个JSON-Schema来显示获取资源时的响应方式。我只是想知道是否有任何捷径可以通过利用已建模的案例类来实现。

2 个答案:

答案 0 :(得分:3)

autoschema项目能够从Scala案例类导出JSON模式。您可以按如下方式使用它:

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

Maven工件似乎已不再可用,但它是Github上提供的SBT项目,因此您可以复制源代码,构建Jar或通过放入build.sbt将其添加为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进行了测试。请注意,autoschema有自己的依赖项(主要是play-json 2.3.2),因此您可能需要更改其版本以避免与您自己的项目依赖项发生版本冲突。

答案 1 :(得分:1)

正如@mziccard所说,autoschema是要走的路。但是,由于主存储库上有一些活动,它已经有一段时间了。我花了一些时间来分叉它并更新它的依赖关系并弃用代码(在其他分支中完成的工作,我简单地组合它)。它现在在我的分支下发布在maven中心:

https://github.com/sauldhernandez/autoschema

您可以将其添加到build.sbt

中来使用它

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