【问题标题】:Create Json from a Java Swagger model从 Java Swagger 模型创建 Json
【发布时间】:2019-11-04 22:57:26
【问题描述】:

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

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

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

【问题讨论】:

  • 事实证明,使用 Gson 很容易做到这一点。我会尽快发布这个问题的答案。

标签: json swagger swagger-2.0 openapi


【解决方案1】:

您可以使用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": []
      }
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2012-06-11
    • 2011-09-12
    • 2015-09-20
    • 1970-01-01
    • 2011-09-26
    相关资源
    最近更新 更多