Java后端接收Postman请求变量为null 传递参数为空问题咨询
问题根因
- 请求体结构与后端接收参数完全不匹配:后端
@RequestBody注解声明接收单个StudentRequest实体类对象,要求请求JSON第一层直接对应StudentRequest的成员变量;但当前Postman传入的JSON外层多包裹了一层studentRequest键,且对应值为数组结构,Spring MVC无法完成JSON到实体的映射,所以接收参数为null。 - 补充隐藏问题:
StudentRequest类中未声明publicKey成员变量,但定义了对应的get/set方法,JSON反序列化时可能抛出未知属性异常。
修复方案
方案1:修改Postman请求体(最简便,适配现有后端代码)
直接删除外层的studentRequest包装和数组结构,请求体修改为以下格式即可:
{ "user": "admin", "duration": 19336, "publicKey": "按需传入对应公钥值,无该参数可以不传" }
方案2:修改后端代码(适配现有请求体结构)
如果业务要求必须使用当前的请求体结构,按以下步骤调整:
- 新增请求包装类
public class StudentRequestWrapper { private List<StudentRequest> studentRequest; // 补全studentRequest属性的get/set方法 }
- 修改Controller层接口参数
@PostMapping("/caStudents/student") public String generateSignedValue(@RequestBody StudentRequestWrapper wrapper) throws Exception { // 从wrapper中取出studentRequest数组处理即可 String signedValue=studentService.getSignedValue(wrapper.getStudentRequest().get(0)); return signedValue; }
- 补全
StudentRequest类的缺失成员变量,避免反序列化异常:
public class StudentRequest { private String user; private Long duration; // 补上缺失的publicKey声明 private String publicKey; // 原有get/set方法保留即可 }
内容的提问来源于stack exchange,提问作者Developer and Thinker
相关产品推荐
相关产品推荐

