有没有办法在模型部分定义 HashMap 或 Generic Object 类型?我有一个返回产品的 REST 服务,这些产品可以有不同的选项。options 属性基本上是一个 HashMap,其中 id 是选项名称,其值是选项值。
问问题
24736 次
2 回答
35
是的,这是可能的。
在 OpenAPI (fka. Swagger) 2.0 和 3.0 中,hashmap 始终是一个<string, something>
映射:
- 键始终是字符串,不需要定义。
- 值类型是您想要的,并用
additionalProperties
.
假设您想描述一个<string, string>
像这样的哈希图:
{
"key1": "value1",
"key2": "value2"
}
相应的 OpenAPI 2.0 定义将是:
definitions:
StringStringMap:
type: object
additionalProperties:
type: string
在 OpenAPI 3.0 中,定义将是:
components:
schemas:
StringStringMap:
type: object
additionalProperties:
type: string
像这样的<string, object>
哈希图
{
"key1": {"someData": "data", "someOtherData": true},
"key2": {"someData": "data2", "someOtherData": false}
}
将在 OpenAPI 2.0 中以这种方式定义:
definitions:
ComplexObject:
type: object
properties:
someData:
type: string
someOtherData:
type: boolean
StringObjectMap:
type: object
additionalProperties:
$ref: "#/definitions/ComplexObject"
在 OpenAPI 3.0 中:
components:
schemas:
ComplexObject:
type: object
properties:
someData:
type: string
someOtherData:
type: boolean
StringObjectMap:
type: object
additionalProperties:
$ref: "#/definitions/ComplexObject"
我刚刚在我的 OpenAPI(fka Swagger 教程)的第 4 部分中深入介绍了这一点。
OpenAPI (fka. Swagger) 规范也简要说明了这一点。
于 2016-04-19T07:30:14.277 回答
0
这对我有用。没有任何值类型限制
definitions:
dynamicFields:
type: object
additionalProperties: {}
示例:您可以在此处传递任何类型的值
{
"dynamicFields" : {
"accountNo": "aaaaaa3455",
"customerNo": 123455,
"isApplicable": true,
"phoneNo": [
"38859379384",
3948399448,
true
]
}
}
于 2020-02-12T09:34:05.670 回答