Skip to main content
 首页 » 编程设计

json之将 JSON 转换为与 Swagger 2.0 兼容的 JSON Schema 草案 4

2024年12月31日14落叶无声

我得到了一些由具有大量属性的 REST API 生成的 JSON 文件。

我已经为此 API 创建了 Swagger 2.0 定义,并且需要为其提供相应的响应架构。

主要问题:这个 JSON 文件有很多属性。如果我手动编写模式,会花费很多时间,而且我会犯很多错误。这不是我需要描述的唯一 API。

我知道有一些工具可以将 JSON 转换为 JSON 模式,但是,如果我没记错的话,Swagger 只有对其他对象定义的 $refs 因此只有一个级别,而我发现的工具只生成树结构模式。
我的问题:是否有任何工具可以将 JSON(或 JSON 架构)转换为 Swagger 2.0 兼容的一个?

注意:我在 YAML 中工作,但我不会成为问题,是吗?

例如,我需要什么:

  List of Movements: 
    type: "array" 
    items: 
      $ref: "#/definitions/Movement" 
  Movement: 
    properties: 
      dateKey: 
        type: "string" 
      movement: 
        $ref: "#/definitions/Stock" 
    additionalProperties: false 
  Stock: 
    properties: 
      stkUnitQty: 
        type: "string" 
      stkDateTime: 
        type: "string" 
      stkUnitType: 
        type: "string" 
      stkOpKey: 
        type: "string" 
    additionalProperties: false 

对于我的 JSON 文档:
[ 
  { 
    "dateKey": "20161110", 
    "stkLvls": [ 
      { 
        "stkOpKey": "0", 
        "stkUnitType": "U", 
        "stkDateTime": "20161110T235010.240+0100", 
        "stkUnitQty": 30 
      } 
    ] 
  }, 
  { 
    "dateKey": "20161111", 
    "stkLvls": [ 
      { 
        "stkOpKey": "0", 
        "stkUnitType": "U", 
        "stkDateTime": "20161111T231245.087+0100", 
        "stkUnitQty": 21 
      } 
    ] 
  } 
  ] 

但是,什么 http://jsonschema.net/#/给我:
--- 
"$schema": http://json-schema.org/draft-04/schema# 
type: array 
items: 
  type: object 
  properties: 
    dateKey: 
      type: string 
    stkLvls: 
      type: array 
      items: 
        type: object 
        properties: 
          stkOpKey: 
            type: string 
          stkUnitType: 
            type: string 
          stkDateTime: 
            type: string 
          stkUnitQty: 
            type: integer 
        required: 
        - stkOpKey 
        - stkUnitType 
        - stkDateTime 
        - stkUnitQty 
  required: 
  - dateKey 
  - stkLvls 

我对此很陌生,但很好奇,请不要犹豫,深入解释一下。

预先感谢您的帮助 !

请您参考如下方法:

我还需要一个转换器工具并遇到了这个问题。到目前为止,它似乎工作得很好。它支持 JSON 和 YAML 格式。

https://swagger-toolbox.firebaseapp.com/

鉴于此 JSON(他们的示例):

{ 
  "id": 1, 
  "name": "A green door", 
  "price": 12, 
  "testBool": false, 
  "tags": [ 
    "home", 
    "green" 
  ] 
} 

它产生了这个:
{ 
    "required": [ 
        "id", 
        "name", 
        "price", 
        "testBool", 
        "tags" 
    ], 
    "properties": { 
        "id": { 
            "type": "number" 
        }, 
        "name": { 
            "type": "string" 
        }, 
        "price": { 
            "type": "number" 
        }, 
        "testBool": { 
            "type": "boolean" 
        }, 
        "tags": { 
            "type": "array", 
            "items": { 
                "type": "string" 
            } 
        } 
    } 
}