评论走起

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月23日

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

    1 回复
  • 2017年11月23日

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

    0 回复
  • 2017年11月24日

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

    0 回复