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

SpringDoc OpenAPI 1.6.5下如何使用@ArraySchema注解为嵌套List设置maxItems限制?

解决SpringDoc OpenAPI 1.6.5中嵌套List的@ArraySchema maxItems约束问题

我刚好在SpringDoc 1.x版本里处理过类似的嵌套List约束配置问题,你的核心问题是没搞清楚@ArraySchema和@Schema在嵌套场景下的正确组合方式——之前的写法要么类型不兼容,要么没逐层指定数组约束导致语义验证错误。

问题根源

对于嵌套的List<List<Obj>>、List<List<List<Obj>>>这类结构,每一层数组都需要明确声明约束(比如maxItems),但@ArraySchema的schema属性要求传入的是@Schema类型,而不是另一个@ArraySchema,这就是你遇到类型不兼容报错的原因。

正确写法示例

1. 双层嵌套List(List<List<Obj>>)

@Schema(
    type = "array",
    arraySchema = @ArraySchema(
        maxItems = 5, // 外层List的最大元素数量
        schema = @Schema(
            type = "array",
            arraySchema = @ArraySchema(
                maxItems = 2, // 内层List的最大元素数量
                schema = @Schema(description = "单个Obj对象的描述")
            )
        )
    )
)
private List<List<Obj>> test;

2. 三层嵌套List(List<List<List<Obj>>>)

@Schema(
    type = "array",
    arraySchema = @ArraySchema(
        maxItems = 3, // 最外层List的maxItems
        schema = @Schema(
            type = "array",
            arraySchema = @ArraySchema(
                maxItems = 5, // 中间层List的maxItems
                schema = @Schema(
                    type = "array",
                    arraySchema = @ArraySchema(
                        maxItems = 2, // 最内层List的maxItems
                        schema = @Schema(description = "单个Obj对象的描述")
                    )
                )
            )
        )
    )
)
private List<List<List<Obj>>> listOfTest;

关键逻辑说明

  • 每一层嵌套的数组都需要用@Schema(type = "array")来声明这是一个数组类型
  • 通过@Schema的arraySchema属性,指定当前层数组的约束(比如maxItems),同时通过arraySchema里的schema属性定义下一层元素的结构
  • 如果下一层元素还是数组,就重复@Schema(type = "array") + @ArraySchema的组合;如果是普通对象,直接用@Schema描述即可

这种写法完美适配SpringDoc OpenAPI 1.6.5版本的规则,既能满足每层数组的maxItems约束配置,也不会出现类型不兼容或语义验证错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:33:11