使用@RequestParam接受JSON的字符串方式
作者:心慌ii
@RequestParam用于接收URL参数或表单数据,不能直接接收JSON字符串,需将JSON作为字符串参数传递;前端可将JSON序列化后通过表单或URL提交,后端用@RequestParam接收并手动解析,若需直接接收JSON对象,推荐使用@RequestBody
@RequestParam
1.用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容。
(Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型)
@RequestParam可以接受简单类型的属性,也可以接受对象类型。
2.用来处理 multipart/form-data (表单上传的)
如何使用@RequestParam 接受JSON的字符串
- 前端代码
const message = {
"data": {
"userInfo": "2804951212",
"offerId": offerId,
"action": "distribution",
"categoryNav": categoryNav
},
"gmtBorn": time,
"msgId": time,
"type": "PRODUCT_COLLECTION",
"userInfo": "chrome"
};
$.ajax({
contentType :'application/x-www-form-urlencoded',
type:'post',
url: baseUrl+'/ali-receive',
data:"message="+JSON.stringify(message)
});
- 后端代码
@PostMapping("/ali-receive")
public void aliReceive(@RequestParam("message") String message) {
ReceiveLog receiveLog = JSON.parseObject(message, ReceiveLog.class);
}
@RequestBody
一般用来处理 Content-Type: 为application/json
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
