我收到了由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
虽然我不太了解这方面,但我很好奇,请不要犹豫地深入解释。
提前感谢您的帮助!