我正在使用 Swagger 1.2 并且很难尝试模拟JSON嵌套对象,我希望模型架构能够像在Swagger在线演示宠物商店中那样展示POST / pet(示例值)。例如,我的目标是:
{
"parent" : {
"child_1" : {
"child_2a" : "string",
"child_2b" : {
"child_3a" : "string",
"child_3b" : ["string"]
}
}
}
}
正如您所看到的,我有一个超过1级的JSON。在我的parameter
数组中,我有类似的内容:
....
stuff here
.....
api: [
{
"path": "/api/foo/bar",
"operations": [
{
"method": "POST",
"summary": "a job",
"consumes": ["application/json"],
"authorizations": {},
"parameters": [
{
"name": "body",
"required": true,
"type" : "Parent",
"description": "some description",
"paramType": "body"
},
{
"name": "fooz",
"description": "some description",
"required": false,
"type": "string",
"paramType": "query"
}
],
......
........
}
],
"models" : {
"Parent": {
"id": "Parent",
"required": ["parent"],
"properties": {
"parent": {
"$ref": "Child1"
}
}
},
"Child1": {
"id": "Child1",
"required" : ["child_1"],
"properties": {
"child_1": {
"$ref": "Child2"
}
}
},
"Child2" : {
"id" : "Child2",
"required" : ["child_2a", "child_2b"],
"properties" : {
"child_2a" : {
"type" : "string"
},
"child_2b" : {
"$ref" : "Child3"
}
}
},
"Child3" : {
"id" : "Child2",
"required" : ["child_3a", "child_3b"],
"properties" : {
"child_3a" : {
"type" : "string"
},
"child_3b" : {
"type" : "array",
"items": {
"type": "string"
}
}
}
}
但模型架构显示为:
{
"parent" : "Child1"
}
我可能做错了什么?如何让它在Model Schema中显示整个嵌套对象?就像Swagger演示宠物店POST / Pet Example Value
一样答案 0 :(得分:0)
Swagger 1.2要求整个模型定义是平的 - 意思是,你不能有嵌套的复杂对象,只能有基元和对其他复杂对象的引用。
从swagger 2.0开始,您现在可以拥有内联,嵌套或匿名对象。
简而言之,您无法对1.2中描述的内容进行建模。如果可以,请考虑更新您的库以使用swagger 2.0。