You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenAPI 3.0枚举生成异常:API响应Map未生成对应枚举类

问题原因及解决办法

核心问题

你的OpenAPI YAML配置存在两处关键错误,导致代码生成工具无法识别枚举并生成对应类:

  1. 枚举定义不符合OpenAPI规范:OpenAPI的enum字段要求直接列出允许的枚举值(如字符串、数字),而非包含code和name的对象数组。
  2. additionalProperties的结构未明确绑定Schema:你直接在additionalProperties下嵌套了属性定义,但未将其声明为可复用的Schema,工具无法识别并生成具体类,只能用Object兜底。

修正后的YAML配置

将枚举定义调整为规范格式,并把additionalProperties指向明确的Schema:

somemap:
  type: object
  additionalProperties:
    $ref: '#/components/schemas/SortCodeConfig'

components:
  schemas:
    SortCodeConfig:
      type: object
      properties:
        sortCode:
          type: string
          example: "A"
          # 规范的枚举值列表
          enum: [A, D]
          # 可选:添加枚举描述,部分代码生成工具支持(如OpenAPI Generator)
          x-enum-descriptions:
            - "Ascending"
            - "Descending"

修正后的API示例响应

确保示例响应与YAML定义匹配(原示例的数组+键值对格式不符合sortCode为string类型的定义):

{
  "somemap": {
    "id1": {
      "sortCode": "A"
    },
    "id2": {
      "sortCode": "D"
    }
  }
}

生成效果

修正后,代码生成工具会自动生成:

  • SortCode枚举类(包含A、D两个枚举值,若工具支持x-enum-descriptions会附带描述)
  • SortCodeConfig类(包含SortCode类型的sortCode字段)
  • API方法签名变为:
ResponseEntity<Map<String, SortCodeConfig>> getCodes();

补充说明

如果需要保留code和name的键值对结构(比如响应中要同时返回编码和名称),需调整Schema定义为:

components:
  schemas:
    SortCodeEntry:
      type: object
      properties:
        code:
          type: string
          enum: [A, D]
        name:
          type: string
          enum: [Ascending, Descending]
    SortCodeConfig:
      type: object
      properties:
        sortCode:
          type: array
          items:
            $ref: '#/components/schemas/SortCodeEntry'

对应的示例响应改为:

{
  "somemap": {
    "someKey": {
      "sortCode": [
        {"code": "A", "name": "Ascending"},
        {"code": "D", "name": "Descending"}
      ]
    }
  }
}

这种情况下生成的sortCode会是List<SortCodeEntry>类型,枚举类会为code和name分别生成(或根据工具配置合并)。

内容的提问来源于stack exchange,提问作者user1318369

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 04:48:16