从Java Swagger模型创建Json



假设我有一个io.swagger.models.Swagger类的对象,来自库io.swagger:swagger-models:1.5.24。如何将其转换为JSON?

我的目标是从我们的REST API定义中创建一个json文件。我们在Scala中使用Finch/Finagle,这将是一种全新的功能;我希望它尽可能的通用。我对设计有一个想法,但它需要将Java模型转换为JSON,而且我还没有在Swagger中找到这种功能。

这是swagger v2。不知道它是什么版本的OpenAPI。如果还有一种生成swagger v3和相关OpenAPI的方法,那将不胜感激,但swagger v2在这里是绝对必要的。

您可以使用Gson库对Java对象进行编码。我在build.sbt文件中使用了"com.google.code.gson" % "gson" % "2.8.6"

Scala代码如下:

def getServerJson: String = {
val gson = (new GsonBuilder).setPrettyPrinting().create
val swag = new Swagger()
val op = new Operation
op.setVendorExtensions(null)
op.setSummary("Updates a pet in the store with form data")
op.consumes("application/x-www-form-urlencoded")
val p = new Path
p.setVendorExtensions(null)
p.setPost(op)
swag.path("/pet/{petId}",p)
gson.toJson(swag)
}

这很有状态,有点烦人。也许有一些不可变的模型对象在函数程序中更容易操作。这没什么大不了的,它满足了我的迫切需要。Json生产的产品看起来像:

{
"swagger": "2.0",
"paths": {
"/pet/{petId}": {
"post": {
"summary": "Updates a pet in the store with form data",
"consumes": [
"application/x-www-form-urlencoded"
],
"parameters": []
}
}
}
}

最新更新