JQuery Ajax 请求参数 List 集合处理

引言

JQuery Ajax 发送请求参数一般都是基本类型,比如 String、int;那么,请求参数如果是 List 集合应该如何处理呢?

情况一:Aajx 发送 List 类型请求参数

举例如下:

前端代码
复制代码
//声明list
var list = [];

//放入string对象
for (var i = 0; i < 3; i++) {
	list[i]="tom";
}

$.ajax({
	url : 'test',
	data : "list":list,
	type : "POST",
	success : function(data) {
		alert(data);
	}
});
后端代码
复制代码
@RequestMapping("test")
@ResponseBody
public String ajaxList(List<String> list){
	for (String str : list) {
		System.out.println(str);
	}
	return "OK";
}

可以看出,List 类型请求参数与基本类型请求参数没什么区别,无非就是服务器请求参数绑定时类型要写 List

情况二:Ajax 发送 List 类型请求参数

这种情况就要麻烦一些了,SpringMVC 无法直接绑定复杂的请求参数类型,需要用到第三方 json 解析工具,比如 jackson 。

maven 导入 jackson 依赖包

复制代码
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.7.3</version>
</dependency>
前端代码
复制代码
//声明list
var list = [];
//创建两个user对象
var a= {};
a.name="tom";
a.age=23;
a.city="上海";
var b = {};
b.name="jack";
b.age=25;
a.city="安徽";
//将user放入_list
list.push(a);
list.push(b);
 
$.ajax({
	url : 'test',
	data : "list":JSON.stringify(list),
	type : "POST",
	success : function(data) {
		alert(data);
	}
});

JSON.stringify(list) 代码的作用是将 js 对象转换为 json 格式的字符串。这样,无论 js 对象多复杂,最终发送给服务器的请求参数就是一个 json 格式字符串罢了。

后端代码
复制代码
@RequestMapping("test)
@ResponseBody
public String ajaxList(String list) throws Exception{

	//jackson对象
	ObjectMapper mapper = new ObjectMapper();

	//使用jackson将json转为List<User>
	JavaType jt = mapper.getTypeFactory().constructParametricType(ArrayList.class, User.class);   

	List<User> userList=  (List<User>)mapper.readValue(list, jt);
		
	return "OK";
}

以上代码参数绑定的是 String 类型,因为 ajax 发送的就是 String 类型。接着,就是使用 jackson 工具将 json 字符串转换为 Java 对象即可。

posted @   Binge-和时间做朋友  阅读(2430)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示