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

OpenAPI 3:如何定义元素顺序固定的自定义Schema对象数组?

在OpenAPI中定义固定顺序的结构化数组

可以实现。在OpenAPI 3.0及以上版本中,你可以通过将数组Schema的items字段设为数组形式,来指定每个位置必须匹配的已定义Schema,以此强制数组元素的顺序和类型严格符合要求。

比如针对你需要的[Dog, Duck, Dog, Cat, Cat]结构,示例定义如下:

components:
  schemas:
    # 先定义基础Schema
    Cat:
      type: object
      properties:
        meow:
          type: string
    Dog:
      type: object
      properties:
        bark:
          type: string
    Duck:
      type: object
      properties:
        quack:
          type: string
        swim:
          type: boolean
    # 定义固定顺序的数组Schema
    FixedOrderPetArray:
      type: array
      items:
        - $ref: '#/components/schemas/Dog'   # 第1个元素必须是Dog
        - $ref: '#/components/schemas/Duck'  # 第2个元素必须是Duck
        - $ref: '#/components/schemas/Dog'   # 第3个元素必须是Dog
        - $ref: '#/components/schemas/Cat'   # 第4个元素必须是Cat
        - $ref: '#/components/schemas/Cat'   # 第5个元素必须是Cat
      minItems: 5  # 强制数组长度为5,不能少元素
      maxItems: 5  # 强制数组长度为5,不能多元素

这里的核心逻辑是:

  • items数组的每个元素对应目标数组中相同索引位置的元素Schema
  • 配合minItems和maxItems锁定数组长度,避免出现元素数量不符的情况
  • 只有OpenAPI 3.0+支持这种items的数组写法,OpenAPI 2.0不支持该特性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:17:09