使用 iheartradio/play-swagger 为 swagger.yml 播放应用程序设置嵌套变量

时间:2021-06-08 12:16:22

标签: scala play-json

我正在使用 iheartradio/play-swagger lib 生成 swagger.json 到服务器 UI。我无法在 swagger.yml 中设置嵌套变量(信息下的标题)。虽然我可以设置,例如主机变量。

swagger.yml

  swagger: "2.0"
    info:
      description: "API"
      version: "1.0.0"
      title: "Brand API"
    host: "api.radio"
    tags:
    - name: "brand"

这是 swagger 控制器代码

val authUrl = "brand"
lazy val swagger = Action { request =>
        generator.generate().map(_ + ("title" -> JsString(authUrl))).fold(
          e => InternalServerError("Couldn't generate swagger."),
          s => Ok(s))
      }

1 个答案:

答案 0 :(得分:1)

在嵌套的 JSON 中添加属性的一种方法是使用 JsObject#deepMerge

在您的示例中,替换

generator.generate().map(_ + ("title" -> JsString(authUrl)))

与:

val toMerge = Json.parse(s"""{ "info": { "title": "$authUrl" } }""") // or build it manually
generator.generate().map(_.deepMerge(toMerge))