Dictionary Swagger HashMap属性类型

Dictionary Swagger HashMap属性类型,dictionary,swagger,openapi,Dictionary,Swagger,Openapi,有没有办法在models部分定义HashMap或泛型对象类型? 我有一个返回产品的REST服务,这些产品可以有不同的选择。options属性基本上是一个HashMap,其中id是选项名,其值是选项值 是的,这是可能的 在OpenAPI(fka.Swagger)2.0和3.0中,哈希映射始终是映射: 键始终是字符串,不需要定义 值类型是您想要的,并且是使用附加属性定义的 假设您想描述一个如下所示的哈希映射: { "key1": "value1", "key2": "value2" }

有没有办法在models部分定义HashMap或泛型对象类型? 我有一个返回产品的REST服务,这些产品可以有不同的选择。options属性基本上是一个HashMap,其中id是选项名,其值是选项值

是的,这是可能的

在OpenAPI(fka.Swagger)2.0和3.0中,哈希映射始终是
映射:

  • 键始终是字符串,不需要定义
  • 值类型是您想要的,并且是使用
    附加属性定义的
假设您想描述一个如下所示的
哈希映射:

{
  "key1": "value1",
  "key2": "value2"
}
相应的OpenAPI 2.0定义为:

定义:
StringMap:
类型:对象
其他属性:
类型:字符串
在OpenAPI 3.0中,定义为:

组件:
模式:
StringMap:
类型:对象
其他属性:
类型:字符串

像这样的hashmap

{
  "key1": {"someData": "data", "someOtherData": true},
  "key2": {"someData": "data2", "someOtherData": false}
}
将在OpenAPI 2.0中以这种方式定义:

定义:
络合对象:
类型:对象
特性:
一些数据:
类型:字符串
其他一些数据:
类型:布尔型
StringObjectMap:
类型:对象
其他属性:
$ref:“#/definitions/ComplexObject”
在OpenAPI 3.0中:

组件:
模式:
络合对象:
类型:对象
特性:
一些数据:
类型:字符串
其他一些数据:
类型:布尔型
StringObjectMap:
类型:对象
其他属性:
$ref:“#/definitions/ComplexObject”
我刚才已经深入讨论了这个问题


这对我来说很有用。没有任何值类型限制

      definitions:
        dynamicFields:
          type: object
          additionalProperties: {}
示例:您可以在此处传递任何类型的值

{
   "dynamicFields" : {
      "accountNo": "aaaaaa3455",
      "customerNo": 123455,
      "isApplicable": true,
      "phoneNo": [
        "38859379384",
        3948399448,
        true
      ]
    }
}

你用的是什么样的招摇?(jax-rs、play等)@Eyal:我们使用的是招摇过市的用户界面,也有同样的问题。你有解决方案或解决办法吗?@JanHartung没有,我们的api中没有太多地图。。。如果值的数据结构都是ComplexObject类型,那么您可能希望订阅此选项,这将非常有用。但是,我有一个场景,其中值的结构根据键的模式而变化。在JSON模式中,我可以使用patternProperties轻松地表达这一点。有没有想过如何在OAS/Swagger中表达这一点?我使用的是Swagger 2.0。我想得到。我们怎么能得到这样的回应?很好的提示!然而,有一个棘手的问题,比如在这个语法中定义的示例无法正确显示,看起来这个属性只是在示例值中丢失了。有什么线索可以解决这个问题吗?@arnaud我们可以有一个不同键的hashmap吗?也就是说,看起来很棒,当
$ref
用作一个值时,我仍然不知道如何定义
string
作为键类型(当然是打开API 3)。你能解释一下吗?