Scala案例类到json模式

Ale*_*rov 1 rest json scala

我想生成案例类的json模式,以便向其他服务提供一些信息,这些服务将使用rest api公开我的应用程序

我有这门课:

case class Vendor(
                  name: String,
                  synonyms: List[String],
                  transalit: String,
                  urlPart: String)
Run Code Online (Sandbox Code Playgroud)

我怎么能这样生成:

{
   "type":"object",
   "properties":{
      "name":{
         "type":"string"
      },
      "synonyms":{
         "type":"array",
         "items":{
            "type":"string"
         }
      },
      "translit":{
         "type":"string"
      },
      "urlPart":{
         "type":"string"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

我发现这个:https://github.com/coursera/autoschema但是sbt找不到依赖.

我也发现这有没有办法从Scala Case Class层次结构中获取JSON-Schema?这个问题与我的问题很相似,但没有答案..

也许我正在寻找不存在的答案.使用其他一些技术可能会更好

mzi*_*ard 6

似乎autoschema的Maven工件不存在,这就是sbt无法找到依赖关系的原因.

好消息是,使用sbt,您可以从github导入项目并将其添加为依赖项.在您build.sbt添加以下内容:

lazy val autoschemaProject =
  ProjectRef(uri("https://github.com/coursera/autoschema.git"), "autoschema")

lazy val root = (project in file(".")).dependsOn(autoschemaProject)
Run Code Online (Sandbox Code Playgroud)

请注意,root可能已经在您的定义中build.sbt,在这种情况下只添加dependsOn(autoschemaProject).
我用sbt 0.13.7测试了这个,我设法使用autoschema从case类生成一个json模式.