入坑SpringMvc中@RequestBody自动装配的实体类为null

1.controller类


@RestController
public class qudaoController {
    @PostMapping(value = "/check")
    public ResultData check(@RequestBody CommitSure commitSure) {
     return null;
    }
}

2.实体类

@Data
public class CommitSure {
    private String RequestId;
    private String Version;

3.用postman发送post请求,debug controll中实体类的数据为null

{
		"RequestID": "xxx555",
		"Version": "1.0.0"	
}

CommitSure commitSure得到参数都为null

4.网上搜了很多

	1.需要添加@RequestBody(required = false);设置参数为不必须,只能解决为空报错。
	2.设置请求体。conten-type
		@PostMapping(value = "/check",produces = "application/json;charset=utf-8");也没有解决问题

5.@responseBody默认json转换

1.请求的json数据会存到request的body中,进入controlle
依据是:
	
    @PostMapping(value = "/check")
    public ResultData check(@RequestBody JSONObject json) {
    CommitSure commitSure=JSON.toJavaObject(json, CommitSure.class)
    //这样可以得到将前端的数据存入CommitSure实体类。
     return null;
    }
2.那就说明@springBody在将json封装成实体类出现错误;
	出错误原因:
	获取"RequestId": "xxx555"@springBody获取要接受的实体类属性RequestId并统一转为驼峰式requestId,
	然后去json中获取key为requestId的值,此时为null;调用实体类中setRequest()方法为实体类赋值。
	
3.解决思路:
	方式一:1.json传递数据的key统一改为驼峰式
		{
		"requerstID": "xxx555",
		"version": "1.0.0v"	
		}
	方式二:2.告诉解析器要去查找的json的key的值
		//利用@JsonProperty在实体类属性上指定,对应json的key值
		@Data
		public class CommitSure {
			@JsonProperty(“RequestId”)
   		 	private String RequestId;
   		 	@JsonProperty(“Version”)
    		private String Version;
		}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值