评论走起
spring MVC的JSON问题
在SpringMVC环境中, @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用JSON.stringify(data)的方式就能将对象变成字符串。
同时ajax请求的时候也要指定dataType:json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.
前台代码
[pre]
function submitUserList(){
alert("ok");
var customerArray = new Array();
customerArray.push({id: "1", name: "李四", pwd: "123"});
customerArray.push({id: "2", name: "张三", pwd: "332"});
$.ajax({
url: "/user/submitUserList_3",
type: "POST",
dataType:"json",
data: {
//"doList":JSON.stringify(customerArray), //将Json对象序列化成Json字符串,JSON.stringify()原生态方法
"doList":$.toJSON(customerArray)
}, //将Json对象序列化成Json字符串,toJSON()需要引用jquery.json.min.js
success: function(data){
},
error: function(res){
alert(res.responseText);
}
});
}
[/pre]
后台代码
方法1
//若接收的参数可以被封装到javabean对象中则可以如下写:
[pre]
public List < User> doList(String doList) {
//先把字符串转成JSONArray
JSONArray jsonArray = JSONArray.fromObject(doList);
//再把jsonArray转成对象集合
List < User > list = (List) JSONArray.toCollection(jsonArray, User.class);
return list;
}
[/pre]
方法2:
//若接收的参数不方便被封装到java对象中,则可以用下面方式获取
[pre]
public List < User> doList(String doList) {
//先把字符串转成JSONArray
JSONArray jsonArray = JSONArray.fromObject(doList);
//迭代jsonArray
Iterator<Object> it = jsonArray.iterator();
List<User> list=new ArrayList<User>();
while (it.hasNext()) {
JSONObject ob = (JSONObject) it.next();//取到每个JSONObject对象
User user = null;
if(ob.getString("id")!=null){//调用JSONObject的getString("属性")方法获取对应值
user=new User();
user.setId(ob.getString("id"));
}
if(ob.getString("name")!=null){
user.setName(ob.getString("name"));
}
if(user!=null){
list.add(user);
}
}
return list;
}
[/pre]
json与java的转换:::::
JSON 字符串 与 java 对象的转换
1. 把java 对象列表转换为json对象数组,并转为字符串
[pre]
JSONArray array = JSONArray.fromObject(list);
String jsonstr = array.toString();
[/pre]
2. 把java对象转换成json对象,并转化为字符串
[pre]
JSONObject object = JSONObject.fromObject(user);
Log4jInit.ysulogger.debug(object.toString());
[/pre]
3.把JSON字符串转换为JAVA 对象数组
[pre]
JSONArray json = JSONArray.fromObject(userStr);//userStr是json字符串
List<User> users= (List<User>)JSONArray.toCollection(json, User.class);
[/pre]
4.把JSON字符串转换为JAVA 对象
[pre]
JSONObject jsonobject = JSONObject.fromObject(jsonStr);
User user= (User)JSONObject.toBean(object,User.class);
[/pre]
作者简介
来自
2017年11月20日加入飞趣社区
是个男孩纸哦
学校是未设置
类似文章
- 我,90后,月入过万,一无所有1211阅
- 和珅的和纪晓岚的一段话的话刷新了我对他的看法890阅
- 回望2017:一个前端从业者砥砺前行的一年749阅
- 关于飞趣社区推广的思考692阅
- 网站邮箱激活功能实现623阅
- 翻墙577阅
- 2077评测选集492阅
- 第一批奔三的90后:一事无成,怎么自救?311阅
- 飞趣社区 关于他的未来304阅
赞助商 - 我要加入
作者各个视频平台的二维码
你是第一个很正式地在我的社区写了一篇文章的朋友,我感动的快哭了。非常感谢你~请继续加油,我也会继续努力完善这个社区的
@思执:哈哈,刚刚学ssm,今天用到,就百度了一下,怕忘了,就想到这里了,但是整理格式搞了4次才好,每次修改之前的格式就会全乱套
@☕:哈哈,写文章的这个模板我会不断地完善,后续写文章就会更方便了~你看你写文章哪里体验不好的话可以反馈给我,我会尽量调整