前台传入的JSON对象在后台以实体对象为入参接收

本文介绍了如何处理前端通过JSON对象传递数据到后端,并以实体对象接收的方法。使用POST请求,配合@RequestBody注解,将JSON字符串转化为实体对象。同时,提到了GET请求下以Map类型接收数据的情况,以及使用contentType: "application/json"的重要性。最后,作者提醒关注安全性问题,选择合适的提交方式而非仅考虑接收方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前台实体对象“包装”:

//应用情景一般是插入实体对象到数据库啥的
//第一种方式创建方式
var xxxEntity = {
	//实体对象的属性值
	"id" : 1; 
	"name" : 'Ben';
	"age" : 23;
}
//第二种创建方式
var xxxEntity = {};
xxxEntity.id = 1;
xxxEntity.name = 'Ben';
xxxEntity.age = 23;

前台ajax书写:

$.ajax({
	type: "POST", //注意是POST方式提交
	url: 'xxx',
	contentType: "application/json", //这个不能漏
	data: JSON.stringify(xxxEntity),  //这个也不能漏,将对象(或数组)转换成json字符串
	success: function(r){
		//成功返回后的操作
	}
});

后台controller接收:

@RequestMapping("/create")
public void create(@RequestBody XxxEntity xxxEntity){ //注意要用@RequstBody
	//对实体对象的操作
}

扩展:
当传参是Map类型的

//前台
$.ajax({
	type: "GET", //注意是GET方式提交
	url: 'xxx',
	contentType: "application/json", //这个不能漏
	data: {
		"data1" : aa, //'data1'作为map的key,aa是value
		"data2" : bb,
		"data3" : cc
	}
	//data: {"id" : id}
	success: function(r){
		//成功返回后的操作
	}
});

@RequestMapping("/query")
public void query(@RequestParam Map<String, String> query){ //注意要用@RequstParam
	String data1 = query.get("data1");
	//各种操作blabla..
}

总结:

  • 如果controller中要以实体对象或数组来入参,用POST + @RequestBody组合,还有前台的数据要用data: JOSN.stringify(data),进行转换成JSON字符串
  • 如果controller要以Map形式入参,用GET + @RequestParam组合,前台数据直接是data: data,不用转换
  • 记得ajax中要写contentType: “application/json”

再唠叨几句:
这里只是提供技术实现,但是没有考虑到安全性的问题,事实上应该是要根据提交特性决定该用哪种方式提交,而不是根据接收方式来决定哪种方式提交。
欢迎大佬们指正或提供更好的解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值