评论走起

spring MVC的JSON问题

在SpringMVC环境中, @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象。然而在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串。同时ajax请求的时候也要指定dataType:json",contentType:"application/json" 这样就可以轻易的将一个对象或者List传到Java端,使用@RequestBody即可绑定对象或者List.前台代码
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)<br> }, //将Json对象序列化成Json字符串,toJSON()需要引用jquery.json.min.js
success: function(data){
},
error: function(res){
alert(res.responseText);
}
});
}
后台代码方法1
//若接收的参数可以被封装到javabean对象中则可以如下写:
public List < User> doList(String doList) {
//先把字符串转成JSONArray
JSONArray jsonArray = JSONArray.fromObject(doList);
//再把jsonArray转成对象集合
List < User > list = (List) JSONArray.toCollection(jsonArray, User.class);
return list;
}
方法2:
//若接收的参数不方便被封装到java对象中,则可以用下面方式获取
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;
}


json与java的转换:::::
JSON 字符串 与 java 对象的转换
1. 把java 对象列表转换为json对象数组,并转为字符串
JSONArray array = JSONArray.fromObject(list);
String jsonstr = array.toString();
2. 把java对象转换成json对象,并转化为字符串
JSONObject object = JSONObject.fromObject(user);
Log4jInit.ysulogger.debug(object.toString());
3.把JSON字符串转换为JAVA 对象数组
JSONArray json = JSONArray.fromObject(userStr);//userStr是json字符串
List<User> users= (List<User>)JSONArray.toCollection(json, User.class);
4.把JSON字符串转换为JAVA 对象
JSONObject jsonobject = JSONObject.fromObject(jsonStr);
User user= (User)JSONObject.toBean(object,User.class);
评论
  • 2017年11月23日

    你是第一个很正式地在我的社区写了一篇文章的朋友,我感动的快哭了。非常感谢你~请继续加油,我也会继续努力完善这个社区的

    1 回复
  • 2017年11月23日

    @思执:哈哈,刚刚学ssm,今天用到,就百度了一下,怕忘了,就想到这里了,但是整理格式搞了4次才好,每次修改之前的格式就会全乱套

    0 回复
  • 2017年11月24日

    @☕:哈哈,写文章的这个模板我会不断地完善,后续写文章就会更方便了~你看你写文章哪里体验不好的话可以反馈给我,我会尽量调整

    0 回复
作者简介

来自

2017年11月20日加入飞趣社区

是个男孩纸哦

学校是未设置