springMVC参数绑定JSON类型的数据
需求就是:
现在保存一个Student,并且保存Student的friend,一个student会有多个朋友,这里要传递到后台的参数是:
var friends = new Array();
var o1 = {
"family": "大宅门",
"otherName": "lisi",
"desc": "亲密无间的好朋友"
} var o2 = {
"family": "军大院",
"otherName": "wangwu",
"desc": "关系一般"
} friends.push(o1);
friends.push(o2); //要传递的参数:id=1 name=zhangsan age=10是要保存的student信息,并且friends是student的朋友信息;
data:{
"id": 1,
"name": "zhangsan",
"age": 10,
"friends":friends
},
一、包装类型来接收JSON类型的传参:
方法一其实就是 springMVC学习(11)-json数据交互和RESTful支持 中接收json数据;只不过包装了另一个po
前台代码,ajax传递数据:
<input type="button" onclick="saveFriend()" value="保存friend" />
<script type="text/javascript">
/**
* 保存朋友
*/
function saveFriend(){
var friends = new Array();
var o1 = {
"family": "大宅门",
"otherName": "lisi",
"desc": "亲密无间的好朋友"
} var o2 = {
"family": "军大院",
"otherName": "wangwu",
"desc": "关系一般"
} friends.push(o1);
friends.push(o2); //要发送的参数
var params = {
"id": 1,
"name": "zhangsan",
"age": 10,
"friends":friends
}; $.ajax({
type: 'post',
url: '${pageContext.request.contextPath }/saveStudent',
contentType:'application/json;charset=utf-8',
dataType: 'json',
data: JSON.stringify(params),
success: function(data){
console.log(data);
}
});
}
</script>
Controller中接受这个参数:
/**
* 保存朋友
*/
@RequestMapping("/saveStudent")
@ResponseBody
public void saveStudent(@RequestBody StudendAndFriend studendAndFriend){
System.out.println("接收参数friends--->> " + studendAndFriend);
}
接收参数的包装类:
StudendAndFriend.java:
package com.cy.po; import java.util.List; /**
* 接收参数包装类
* @author chengyu
*
*/
public class StudendAndFriend {
private int id;
private String name;
private int age;
private List<Friend> friends; public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public List<Friend> getFriends() {
return friends;
}
public void setFriends(List<Friend> friends) {
this.friends = friends;
} }
Friend.java:
package com.cy.po;
public class Friend {
private String family;
private String otherName;
private String desc;
public String getFamily() {
return family;
}
public void setFamily(String family) {
this.family = family;
}
public String getOtherName() {
return otherName;
}
public void setOtherName(String otherName) {
this.otherName = otherName;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
@Override
public String toString() {
return "Friend [family=" + family + ", otherName=" + otherName
+ ", desc=" + desc + "]";
}
}
后台成功接收参:

注意点:
ajax传参:
contentType:'application/json;charset=utf-8'; //contentType为application/json
data: JSON.stringify(params), //传的是字符串;
方法二、
传递String类型的json字符串过来,后台接收后,进行JSONArray解析成对应的List<Object>;
这里使用fastjson-1.2.2.jar包来对json字符串转化为javabean类型;
前端发送请求:
<input type="button" onclick="saveFriend2()" value="保存friend2" />
<script type="text/javascript">
/**
* 保存朋友2
*/
function saveFriend2(){
var friends = new Array();
var o1 = {
"family": "大宅门",
"otherName": "lisi",
"desc": "亲密无间的好朋友"
} var o2 = {
"family": "军大院",
"otherName": "wangwu",
"desc": "关系一般"
} friends.push(o1);
friends.push(o2); friends = JSON.stringify(friends); $.ajax({
type: 'post',
url: '${pageContext.request.contextPath }/saveStudent2',
dataType: 'json',
data: {
"id": 1,
"name": "zhangsan",
"age": 10,
"friends":friends
},
success: function(data){
console.log(data);
}
});
}
</script>
Controller接收这个参数:
//用的是fastjson
import com.alibaba.fastjson.JSONArray;
import com.cy.po.Friend;
/**
* 保存朋友2
*/
@RequestMapping("/saveStudent2")
@ResponseBody
public void saveStudent2(int id, String name, int age, String friends){
List<Friend> frientList = JSONArray.parseArray(friends, Friend.class);
System.out.println("接收参数friends--->> " + frientList);
}
可以看到前端发送参数:

controller中经过json解析为javabean:

springMVC参数绑定JSON类型的数据的更多相关文章
- 利用SpringMVC参数绑定实现动态插入数据
javabean代码:public class User { private String firstName; private String lastName; public String getF ...
- springmvc:请求参数绑定集合类型
一.请求参数绑定实体类 domain: private String username; private String password; private Double money; private ...
- [转载]SpringBoot系列: SpringMVC 参数绑定注解解析
本文转载自 https://www.cnblogs.com/morethink/p/8028664.html, 作者写得非常好, 致谢! SpringMVC 参数绑定注解解析 本文介绍了用于参数绑 ...
- 一篇文章搞定SpringMVC参数绑定
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...
- spring-mvc---Controller参数绑定的类型
Controller参数绑定的类型 Controller的绑定参数类型6种.没有参数(系统默认类型):简单类型(Intager,Double)等:pojo类(对象):数组:集合:HashMap等. 我 ...
- SpringMVC参数绑定,这篇就够了!
SpringMVC参数绑定,简单来说就是将客户端请求的key/value数据绑定到controller方法的形参上,然后就可以在controller中使用该参数了 下面通过5个常用的注解演示下如何进行 ...
- SpringMVC参数绑定(未完待续)
1. Strut2与SpringMVC接收请求参数的区别 Struts2通过action类的成员变量接收SpringMVC通过controller方法的形参接收 2. SpringMVC参数绑定流程 ...
- SpringMvc参数绑定出现乱码解决方法
在SpringMvc参数绑定过程中出现乱码的解决方法 1.post参数乱码的解决方法 在web.xml中添加过滤器 <!-- 过滤器 处理post乱码 --> <filter> ...
- 存在日期类型的JSON数据,进行SpringMVC参数绑定时存在的问题和解决方案
这篇文章已经过时了. 请参考比较合适的前后端交互方式. 首先是发送AJAX请求的html页面 <!DOCTYPE html> <html> <head> <m ...
随机推荐
- FE英文缩写
PM:product manager,产品经理,又称品牌经理,brand managerRD:research and development enginner,研发工程师FE:front-end d ...
- (转载)Java 自动装箱与拆箱、equals和==的比较
什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象实例的时候,我们会这样: Class a = ...
- L1-029 是不是太胖了
据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.已知市斤是公斤的两倍.现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……) 输入格式: ...
- rocketmq集群安装,配置,测试
完整的安装包及demo请到百度云盘下载: 1.上传安装包 2.解压安装包 创建目录rocketmq mkdir -p /apps/install/rocketmq 解压到目录rocketmq tar ...
- OC基础:实例变量和成员变量的区别 分类: ios学习 OC 2015-06-14 17:59 16人阅读 评论(0) 收藏
摘要: Objective-C 引入了"实例变量"的概念,但同时, 也经常出现 "成员变量"的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢 ...
- 微信小程序插件使用
使用插件 小程序开发者可便捷地把插件添加到自己的小程序内,丰富小程序的服务.当用户在使用小程序时,将可以在小程序内使用插件提供的服务. 开放范围 所有小程序 接入流程 在小程序管理后台添加插件 小程序 ...
- Size类型如何调用和定义
cv::Size sz = cv::Size(PROB_W, PROB_H);//Size(srcimage.cols, srcimage.rows) groundtoimage(xylimit, u ...
- Windows 7 SP1 多国语言包(MUI language packs)官方下载
为了装一款 Gal Game (为毛不是装 H-Game?),使用 APP 还是太辛苦了,反正相信童鞋们也都用上“瘟妻”了嘛,装个日文的语言包基本上就可以解决问题了.大家都知道只有旗舰版(Wind ...
- Thinkphp分页类使用
3.2.2分页设置变化: $count = $pro->count(); //查询出总条数 $page=new \Think\Page($count,5); $page->rollPage ...
- js循环总结
js原生的循环有两种,一般的for循环和for...in循环.还有一种常用jQuery.each()循环. 一. js原生循环 a. for循环,代码如下: var myArray = [1,2,3] ...