当前位置: 首页 > 知识库问答 >
问题:

如何在swagger yml中定义HashMap属性?

韶弘壮
2023-03-14

我使用swagger生成类在Java和类型脚本。我有问题定义映射属性与对象列表为值。我试图定义如下:

DataMap
type: object
additionalProperties:
 #type: array -- This config does not work.
  $ref: '#/definitions/Data'

上面的yml定义在java中生成以下代码:

  class DataMap extends HashMap<String, Data> {
    }

如何配置yml以生成包含数据列表的密钥?类似于下面的类:

 class DataMap extends HashMap<String, List<Data>> {
        }

 class DataInfo {
     Map<String, List<Data>> dataMap;
   }

这是否可能与大摇大摆2.0?我正在考虑定义另一个扩展ArrayList的DataList类,然后将该类用作映射的值。

--------------更新

谢谢@nickb

我使用swagger-codemen-maven-plugin版本2.2.1和yml定义生成地图如下:

 DataInfo
    type: object
    properties:
    dataMap:
     type: object
     additionalProperties:
        type: array 
        items:
          $ref: '#/definitions/Data'

共有1个答案

司空均
2023-03-14

我用的是大摇大摆的codegen v2。1.6具有以下模型定义:

 foo:
    properties:
      baz:
        type: string
  bar:
    properties:
      map:
        type: object
        additionalProperties:
          type: array
          items:
            $ref: '#/definitions/foo'

这将生成一个带有以下字段的BarJava类:

Map<String, List<Foo>> map = new HashMap<String, List<Foo>>();

如果你看到不同的行为,你可能会跌跌撞撞地进入倒退。尝试测试早期版本,或者具体看看2.1.6是否正确地生成了这个模型。

 类似资料:
  • 我使用JAXB根据一些XSD模式生成java类。对于以下元素: <代码> jaxb生成以下代码: 问题是我们需要使用一些依赖于getter/setter方法命名约定的专有XML工具,例如,对于字段REC_LOC他们希望使用名为getRecLoc(String value)和setRecLoc()的方法,而不是getRECLOC()。 有没有办法自定义jaxb生成的方法名?

  • 问题内容: 我可以创建自定义属性并将其应用到normal ,如下所示: 我的问题:是否可以在不创建扩展类的情况下读取这些自定义属性的值?我的意思是,我想从我的中读取自定义属性,但是到目前为止,我所看到的示例要求我从自定义视图的构造函数中读取值 问题答案: 我的问题:是否可以在不创建扩展EditText的类的情况下读取那些自定义属性的值? 是的,您无需扩展类即可获取这些属性。为此,你可以使用一个特殊

  • 问题内容: 我正在使用JAXB来基于某些XSD架构生成Java类。对于诸如以下的元素: jaxb生成以下代码: 问题是我们需要使用一些专有的XML工具,这些工具依赖于getter / setter方法的命名约定。例如,对于字段REC_LOC,他们希望使用名为getRecLoc(String value)和setRecLoc()的方法,而不是getRECLOC()。 有什么方法可以自定义jaxb生成

  • 问题内容: jQuery是否有任何语法方法来定义多个CSS属性,而无需像这样将所有内容都放在右边: 如果您有20条这样的代码,那么您将很难阅读,有什么解决方案吗? 例如,通过jQuery API,jQuery可以理解并返回正确的值 和 请注意,对于DOM表示法,属性名称周围的引号是 可选的 ,但对于CSS表示法,由于名称中的连字符,因此 必须 使用引号。 问题答案: 即使您有1个或更多,也最好只使

  • 问题内容: 背后有不同的原因,但是我想知道如何简单地向JSX中的元素添加自定义属性? 问题答案: 编辑:更新以反映React 16 React 16本机支持自定义属性。这意味着向元素添加自定义属性现在就像将其添加至函数一样简单,如下所示: 先前的答案(第15和更早版本) 当前不支持自定义属性。有关更多信息,请参见此未解决的问题: 解决方法是,您可以在中执行以下操作:

  • 我正在为一个api创建一个OpenAPI 3规范,该API具有需要某些属性的对象,对于某些属性,它们是任何对象。当我创建如下规范时,它会抛出一个错误,我无法修复。 Swagger编辑器给出了如下错误 - 在使用如下建议时 验证错误消失了,但swagger编辑器模式/模型视图未显示任何内容,如下所示 -