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

Spring Boot如何在请求体中传递嵌套Map并解析参数?

先确认你的请求体正确格式

你的请求体实际应该是如下合法JSON(去掉转义符后):

{
  "logRequest": {
    "ObIdentifier": "B2003001A22A10A52323J02279",
    "notes": "Company Code could not be determined"
  }
}

方法一:用嵌套Map接收(满足你的需求)

直接在Controller方法里用@RequestBody接收嵌套Map即可,Spring会自动帮你解析JSON结构:

import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;

@RestController
public class LogController {

    @PostMapping("/submit-log")
    public void handleLogRequest(@RequestBody Map<String, Map<String, String>> requestMap) {
        // 取出内层的logRequest Map
        Map<String, String> logRequest = requestMap.get("logRequest");
        // 提取具体参数
        String obId = logRequest.get("ObIdentifier");
        String noteContent = logRequest.get("notes");
        
        // 这里写你的业务逻辑
        System.out.println("获取到ObIdentifier: " + obId);
        System.out.println("获取到备注: " + noteContent);
    }
}
  • 子Map泛型用String是因为你的参数值都是字符串,如果有数字、布尔等其他类型,可以改成Map<String, Object>兼容更多类型。

方法二:用实体类接收(更推荐新手使用)

如果这个JSON结构是固定的,定义对应实体类会让代码更清晰,后续维护也更方便:

  1. 定义内层实体类LogRequest:
public class LogRequest {
    private String ObIdentifier;
    private String notes;

    // 必须保留无参构造方法(Spring JSON解析需要)
    public LogRequest() {}

    // Getter和Setter方法
    public String getObIdentifier() {
        return ObIdentifier;
    }

    public void setObIdentifier(String obIdentifier) {
        ObIdentifier = obIdentifier;
    }

    public String getNotes() {
        return notes;
    }

    public void setNotes(String notes) {
        this.notes = notes;
    }
}
  1. 定义外层包装类LogRequestWrapper:
public class LogRequestWrapper {
    private LogRequest logRequest;

    public LogRequestWrapper() {}

    public LogRequest getLogRequest() {
        return logRequest;
    }

    public void setLogRequest(LogRequest logRequest) {
        this.logRequest = logRequest;
    }
}
  1. Controller中接收并使用:
@PostMapping("/submit-log")
public void handleLogRequest(@RequestBody LogRequestWrapper requestWrapper) {
    LogRequest logRequest = requestWrapper.getLogRequest();
    String obId = logRequest.getObIdentifier();
    String noteContent = logRequest.getNotes();
    
    // 业务逻辑处理
    System.out.println("ObIdentifier: " + obId);
    System.out.println("Notes: " + noteContent);
}

补充说明

Spring Boot默认使用Jackson作为JSON解析工具,只要你的实体类有无参构造方法和对应的Getter/Setter,就能自动完成JSON到Java对象的转换,不需要额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 01:45:23