我已經給出了由REST API生成的一些JSON文件,其中包含大量屬性。將JSON轉換爲JSON Schema草稿4與Swagger 2.0兼容
我已經爲此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
我是新來的那個,但很好奇,不要猶豫,深入解釋。
非常感謝您的幫助!
你好Tom&謝謝你的答案。 在https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v2.0/yaml/uber.yaml我可以看到定義標記只有一個級別。當需要使用其他類型時,他們會爲另一種類型創建一個$ ref:'#/ definitions/Activity'。 但是在JSON Schema v4中,它不是強制性的。 任何解決方案? – Cwellan