我已经获得了REST API生成的一些JSON文件,这些文件具有大量属性 .
我为这个API创建了一个Swagger 2.0定义,需要为它提供相应的响应模式 .
主要问题:这个JSON文件有很多属性 . 这需要花费很多时间,如果我手动编写模式,我会犯很多错误 . 它不是我需要描述的唯一API .
我知道有一些工具可以将JSON转换为JSON模式但是,如果我没有弄错,Swagger只有$ refs到其他对象定义,因此只有一个级别,而我发现的工具只生成树结构模式 . 我的问题:是否有任何工具可以将JSON(或JSON Schema)转换为兼容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
我是新手,但好奇,不要犹豫,深刻解释 .
预先感谢您的帮助 !
3 回答
你误会了 . Swagger将尊重任何有效的v4 JSON模式,只要它只使用supported subset即可 .
它继续列出支持的JSON模式的部分,以及不是的比特,以及由swagger扩展的比特 .
我还需要一个转换器工具,并遇到了这个问题 . 到目前为止它似乎工作得很好 . 它同时执行JSON和YAML格式 .
https://swagger-toolbox.firebaseapp.com/
鉴于此JSON(他们的样本):
它生成了这个:
您可以直接转到https://bikcrum.github.io/Swagger-JSON-Schema-In-YAML_webversion/进行在线转换 .
我编写了以下python脚本,以生成在Swagger中使用的YAML格式(保留键顺序)的JSON模式 .
更新:如果您希望YAML具有排序键(默认情况下),请使用YAML库