为json数组编写swagger模型对我来说非常简单,例如如果我有这个阵列:
[
{
"name": "dave",
"number": 123
},
{
"name": "mary",
"number": 456
}
]
我会为它写下面的招摇模型:
"schema": {
"type": "array",
"items": {
"$ref": "Student"
}
}
"Student": {
"id": "Student",
"required": [
"name",
"number"
],
"properties": {
"name": {
"type": "string"
},
"number": {
"type": "integer",
"format": "int32"
}
}
}
但是,我有以下内容:
{
"123": {
"name": "dave"
},
"456": {
"name": "mary"
}
}
如何为此编写模型?
提前致谢。
答案 0 :(得分:10)
要描述请求模型,您需要使用additionalProperties
属性。请注意,这在Swagger 2.0中可用,并且在早期版本中不可用。
"definitions": {
"Student": {
"type": "object",
"required": [ "name" ],
"properties": {
"name": {
"type": "string"
}
}
},
"Students": {
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/Student"
}
}
}
上面你看到Student
模型,它当前包含“name”属性,但我假设你会添加更多。从上面的示例中,“name”属性是必需的。
第二个模型是Students
,它是一个包含地图的对象(additionalProperties)。每个属性都是Student
类型(通过引用模型完成,但理论上可以内联定义)。
您不能做的一件事是声明键(或属性名称)是整数或给定类型。这可能是由patternedProperties
支持的,这在Swagger 2.0中是不可用的。换句话说,没有技术方法来限制密钥的内容。