Swagger-1.2:如何在模型模式中显示n嵌套的JSON对象

时间:2016-03-31 20:46:44

标签: object swagger

我正在使用 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

一样

1 个答案:

答案 0 :(得分:0)

Swagger 1.2要求整个模型定义是平的 - 意思是,你不能有嵌套的复杂对象,只能有基元和对其他复杂对象的引用。

从swagger 2.0开始,您现在可以拥有内联,嵌套或匿名对象。

简而言之,您无法对1.2中描述的内容进行建模。如果可以,请考虑更新您的库以使用swagger 2.0。