我有一个返回的REST API,本质上是一个Map(String,Object),其中Object是
在JSON中,这很好地转换为:
{
"key1":{
"val1":"some string",
"val2":"some other string",
"val3":"another string"
},
"key2":[
{
"val1":"some string",
"val2":"some other string",
"val3":"another string"
},
{
"val1":"some string",
"val2":"some other string",
"val3":"another string"
}
]
}
通过swagger注释,有没有办法将这种动态Map指定为响应类?
由于
答案 0 :(得分:0)
我读了'Open API Specification' - 'Add support for Map data types #38' page。据我了解,它建议使用其他属性,但我还没有设法使其与Swagger UI 2.1.4一起使用(请参阅我的相关问题:Swagger: map of string, Object)。
我找到了以下解决方法:定义一个对象,其中一个属性是关键,内部对象是" key"属性。
Swagger UI中的显示是正确的,但是人们看不到它是一张地图,因此需要在评论中解释这实际上是一张地图。
在你的情况下,我发现有一个Bean,有一个Beans列表有点奇怪:我会发现在第一种情况下拥有一个Bean的数组更合乎逻辑。
但是,你可以做,例如:
your_property: {
description: "This is a map that can contain several objects indexed by different keys. The value can be either a Bean or a list of Beans.",
type: object,
properties: {
key_for_single_bean: {
description: "The value associated to 'key_for_single_bean' is a single Bean",
$ref: "#/definitions/Bean"
},
key_for_list_of_beans: {
description: "The value associated to 'key_for_list_of_beans' is an array of Beans",
type: array,
items: {$ref: "#/definitions/Bean"}
}
}
}