如何从样本JSON生成Swagger #definition

59

从宠物店示例中取以下的 #definition。可以生成一个JSON结构体。

例如: Coversion of definition to JSON

有没有什么工具能够反过来操作,即给定一份复杂的大型 JSON 文件,能否得到对应的 #definition 部分呢?

给定下面的 JSON 结构体,我是否能够生成 swagger 文件的 #defintion 部分以节省一些打字工作呢?

{
  "variable": "sample",
  "object1": {
    "obj-field1": "field 1 of object",
    "obj-field2": "field 2 of object",
    "anArray": [
      "Value 1",
      {
        "anArrayObj1": "obj1fieldinarray",
        "anArrayObj2": "obj2fieldinarray"
      }
    ]
  }
}

可能是从JSON文件创建存根Swagger模型定义的重复问题。 - Helen
这个回答解决了你的问题吗?将Swagger JSON规范转换为.NET/C#中静态HTML文件的方式 - Prany
4个回答

90

您可以使用这个JSON转OpenAPI模式的转换器:
https://roger13.github.io/SwagDefGen/

(GitHub项目)

虽然我个人没有使用过,所以不确定其性能如何。


因为OpenAPI使用的是JSON Schema的子集,您也可以使用其中一个JSON Schema生成器,但您可能需要手动调整生成的定义以使其与OpenAPI兼容。


26

14
这将创建一个基本的Swagger/OpenAPI文档,但其中不包括原帖作者特别想要的definitions部分。 - Cocowalla
1
是的,这不包括响应结构。 - Lokesh Sanapalli

6
你可以使用`mock-to-openapi`命令行工具,它可以从`JSON`模拟数据生成`OpenAPI YAML`文件。相关链接包括:mock-to-openapiOpenAPI
npm install --global mock-to-openapi

然后运行将文件夹中所有*.json文件进行转换:

mock-to-openapi ./folder/*.json`

例如,我们有一个带有json对象的示例:

{
    "title": "This is title",
    "author": "Roman Ožana",
    "content" : "This is just an example",
    "date": "2020-05-12T23:50:21.817Z"
}

工具mock-to-openapiJSON转换为以下OpenAPI规范:

type: object
properties:
  title:
    type: string
    example: This is title
  author:
    type: string
    example: Roman Ožana
  content:
    type: string
    example: This is just an example
  date:
    type: string
    format: date-time
    example: 2020-05-12T23:50:21.817Z

0

这对我很有用:

从示例 JSON 生成 Swagger REST-client 代码(和POJO)

  1. 进入 apistudio.io

    • 插入 -> 新建模型。
    • 复制并粘贴您的 JSON。
    • [Swagger YML 文件将被生成]
    • 下载 -> YAML。
  2. 进入 editor.swagger.io

    • 复制并粘贴从上一步保存的 YAML。
    • 生成客户端 -> jaxrs-cxf-client(还有许多其他选项)。

18
apistudio.io不再可用。 - kmcconnell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接