【问题标题】:Generic object names not being serialized when using openapi generator for a java client为 java 客户端使用 openapi 生成器时,通用对象名称未序列化
【发布时间】:2021-02-22 03:07:12
【问题描述】:

我使用 openapi generate version 5.0.0 生成了一个 java 客户端,使用除模型包等以外的所有默认值。

我让它在像这样的招摇编辑器中正确渲染。

此组件的特定 yaml 如下所示。

components:
  schemas:
    WorkItem:
      properties:
        workitems:
          type: array
          items:
            properties:
              json:
                type: object
                additionalProperties:
                  type: string

使用客户端的示例代码如下所示。

    ApiKeyAuth ApiKeyAuth = (ApiKeyAuth) defaultClient.getAuthentication("ApiKeyAuth");
    ApiKeyAuth.setApiKey(result.getToken());

    WorkItem workItem = new WorkItem();

    Map map = new HashMap();
    map.put("test1", "test1");
    map.put("test2", "test2");
    map.put("test3", "test3");

    workItem.addWorkitemsItem(map);


    apiInstance.addWorkItem("3", "9", workItem);

然而,当我记录信息时,它显示请求正文中的有效负载看起来像这样。

{"workitems":[{"test2":"test2","test3":"test3","test1":"test1"}]}

而不是上面的招摇展示。我期待它渲染出对象名称。在这种情况下,它是一个通用映射而不是一个“json”命名对象。我在构建 openapi 的方式上是否做错了什么?

如果我尝试在不使用其他属性的情况下使其更具体,在这种情况下,客户端仍然会求助于使用通用对象。

【问题讨论】:

    标签: java openapi swagger-codegen


    【解决方案1】:

    解决方案是使用单例地图而不是常规地图。

    workItem.addWorkitemsItem(Collections.singletonMap("json", map));
    

    【讨论】:

      猜你喜欢
      • 2022-10-05
      • 2020-04-19
      • 2021-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 2012-02-15
      相关资源
      最近更新 更多