从 Java Swagger 模型创建 Json
Create Json from a Java Swagger model
假设我有一个对象 class 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": []
}
}
}
}
假设我有一个对象 class 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": []
}
}
}
}