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

Java OpenAPI/Swagger:POST请求体无法获取默认示例值,接收为null

解决POST请求体List参数接收为null的问题

问题原因

直接使用List<Long>作为@RequestBody参数时,Swagger无法自动识别正确的请求体格式,同时Spring MVC在解析纯JSON数组类型的请求体时,容易出现解析失败导致参数为null的情况。

解决方案

1. 将List包装为实体类(推荐)

Spring对对象结构的JSON解析支持更稳定,创建一个DTO类包装List:

public class AdjustmentListRequest {
    private List<Long> adjList;

    // 生成getter、setter方法
    public List<Long> getAdjList() {
        return adjList;
    }

    public void setAdjList(List<Long> adjList) {
        this.adjList = adjList;
    }
}

修改接口方法,接收包装后的DTO:

@Operation(summary = "pushAdjustmentList")
@PostMapping(value = "/push/adjList")
public ResponseEntity<String> pushAdjustmentList(
        @RequestBody(description = "List of Adjustment Ids", required = true) AdjustmentListRequest request) {
    HttpStatus status = HttpStatus.OK;
    String response = null;
    List<Long> adjList = request.getAdjList();
    log.debug("Adjustments list submitted : {}", adjList);
    try {
        response = producerService.pushAdjustmentList(adjList);
    } catch (Exception ex) {
        log.error(LOGGER_COULD_NOT_PROCESS_REQUEST, ex.getMessage());
        response = ex.getMessage();
        status = HttpStatus.INTERNAL_SERVER_ERROR;
    }
    return ResponseEntity.status(status).body(response);
}

这样Swagger会自动生成包含adjList字段的JSON示例,Spring也能正确解析请求体。

2. 直接配置Swagger示例与请求格式(不包装类)

如果坚持使用纯数组作为请求体,需要显式配置Swagger的示例和请求体格式:

@Operation(summary = "pushAdjustmentList")
@PostMapping(value = "/push/adjList")
public ResponseEntity<String> pushAdjustmentList(
        @RequestBody(description = "List of Adjustment Ids", required = true, 
            content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE,
                schema = @Schema(type = "array", implementation = Long.class),
                examples = @ExampleObject(value = "[123, 456, 789]"))) 
        List<Long> adjList) {
    // 原有业务逻辑
}

调用接口时,请求体必须是纯JSON数组(如[1001, 1002]),且请求头需设置Content-Type: application/json。

3. 检查Spring MVC JSON解析配置

确保项目已引入Jackson依赖(Spring Boot starter-web默认包含),如果是手动配置Spring MVC,需确认MappingJackson2HttpMessageConverter已注册,保证JSON请求体能被正确解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:17:38