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

SpringBoot+springdoc-openapi-ui:数组URL参数示例不显示问题

解决springdoc-openapi-ui中URL数组参数示例不显示及请求参数异常问题

我之前也碰到过类似的坑,咱们先来拆解你遇到的两个问题的根源,再给出具体的解决办法:

问题根源分析

  1. 示例值格式错误
    你在@Parameter里写的example = "[f1,f2,f3]"是一个带方括号的字符串,而springdoc对于数组类型的参数,需要的是数组形式的示例值,不是字符串。swagger会把这个字符串当成单个参数值,自然不会在输入框里显示成数组的样子,请求时也会把整个字符串作为一个数组元素发送,导致后端收到的参数不符合预期。

  2. Schema配置不匹配
    你手动指定content = @Content(array = @ArraySchema(schema = @Schema(type = "string")))的写法有点冗余,springdoc对于@RequestParam的数组参数,其实可以更简洁地配置,这种绕弯的配置反而可能导致swagger识别错误。

具体解决办法

方法一:修正@Parameter的示例和Schema配置

把示例改成JSON数组格式,同时调整Schema的写法,让swagger正确识别数组类型:

@Parameters(value = { 
    @Parameter(in = ParameterIn.QUERY, 
               name = "output", 
               examples = @ExampleObject(value = "[\"f1\",\"f2\",\"f3\"]"),
               content = @Content(schema = @Schema(type = "array", items = @Schema(type = "string")))) 
})
public ResponseEntity<Object> showReportData(@RequestParam(value = "output") String[] outputFields) {
    // 业务逻辑代码
}

这里用examples配合@ExampleObject传入JSON格式的数组字符串,swagger就能正确解析并在输入框里显示示例值了。

方法二:更简洁的@Schema注解(推荐)

直接在参数上用@Schema注解,不需要额外的@Parameters和@Parameter,springdoc会自动识别参数类型并生成正确的swagger文档:

public ResponseEntity<Object> showReportData(
    @RequestParam(value = "output") 
    @Schema(example = {"f1", "f2", "f3"}, 
            type = "array", 
            items = @Schema(type = "string")) 
    String[] outputFields) {
    // 业务逻辑代码
}

这种写法更直观,也不容易出错,示例值直接用Java数组形式,swagger会自动处理成正确的展示格式。

方法三:配置数组参数的请求风格(可选)

如果希望swagger UI用逗号分隔的形式发送数组参数(比如output=f1,f2,f3),而不是默认的多参数形式(output=f1&output=f2&output=f3),可以在application.properties里添加配置:

springdoc.swagger-ui.query-config.array-style=comma

这样请求时参数格式就会符合你的预期了。

验证效果

修改完代码后重启服务,打开swagger UI就能看到output参数的输入框里显示出f1,f2,f3的示例值,点击执行后,请求参数会以正确的数组形式发送(多参数或逗号分隔,取决于你的配置),后端也能正确接收到String[]类型的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 18:37:43