• spring MVC 如何接收前台传入的JSON对象数组并处理


    spring MVC 如何接收前台传入的JSON对象数组  

    主要方法

    (主要用到的包是 net.sf.json  即:json-lib-2.3-jdk15.jar 

    完整相关jar包:

    commons-beanutils-1.7.0.jar
    commons-collections-3.2.jar 

    commons-lang-2.4.jar 

    commons-logging-1.1.jar 

    ezmorph-1.0.4.jar 

    json-lib-2.2.2-jdk15.jar)

    转换JSONArray json数组为实体类的List

    1 //T是随便定义的泛型,你根据自己需要自己定义类型
    2 //doList是json类型字符串
    3 public List<T> doList(String doList){ 
    4   JSONArray jsonArray=JSONArray.fromObject(doList);
    5   List<T> list=(List)JSONArray.toCollection(jsonArray,T.class);
    6   return list;
    7 }

    迭代json数组

    1 Iterator<Object> it = jsonArray.iterator();
    2 while (it.hasNext()) {
    3   JSONObject ob = (JSONObject) it.next();
    4 }

    ------

    ------

    具体代码:

    js代码:

     1 function submitUserList() {
     2             alert("ok");
     3             var customerArray = new Array();
     4             customerArray.push({id: "1", name: "李四", pwd: "123"});
     5             customerArray.push({id: "2", name: "张三", pwd: "332"});
     6             
     7             $.ajax({
     8                 url: "/user/submitUserList_3",
     9                 type: "POST",
    10                 dataType:"json",
    11                 data: {
    12                 //"doList":JSON.stringify(customerArray),    //将Json对象序列化成Json字符串,JSON.stringify()原生态方法
    13                     "doList":$.toJSON(customerArray)
    14                     },            //将Json对象序列化成Json字符串,toJSON()需要引用jquery.json.min.js
    15                 success: function(data){
    16                 },
    17                 error: function(res){
    18                     alert(res.responseText);
    19                 }
    20             });
    21         }

    java代码:

     方法一:

    1 ///若接收的参数可以被封装到javabean对象中则可以如下写:
    2         public List < User> doList(String doList) {
    3             //先把字符串转成JSONArray
    4             JSONArray jsonArray = JSONArray.fromObject(doList);
    5             //再把jsonArray转成对象集合
    6             List < User > list = (List) JSONArray.toCollection(jsonArray, User.class);
    7             return list;
    8         }
    9         

    --------

     方法二:

     1 ///若接收的参数不方便被封装到java对象中,则可以用下面方式获取
     2         public List < User> doList(String doList) {
     3             //先把字符串转成JSONArray
     4             JSONArray jsonArray = JSONArray.fromObject(doList);
     5             //迭代jsonArray
     6             Iterator<Object> it = jsonArray.iterator();
     7             List<User> list=new ArrayList<User>();
     8             while (it.hasNext()) {
     9                 JSONObject ob = (JSONObject) it.next();//取到每个JSONObject对象
    10                 User user = null;
    11                 if(ob.getString("id")!=null){//调用JSONObject的getString("属性")方法获取对应值
    12                     user=new User();
    13                     user.setId(ob.getString("id"));
    14                 }
    15                 if(ob.getString("name")!=null){
    16                     user.setName(ob.getString("name"));
    17                 }
    18                 if(user!=null){
    19                     list.add(user);
    20                 }
    21             }
    22             return list;
    23         }

    ----------------------

    下面是一些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);
  • 相关阅读:
    C语言之内存分配函数
    C语言const
    【Hihocoder 1167】 高等理论计算机科学 (树链的交,线段树或树状数组维护区间和)
    【HDU 1828】 Picture (矩阵周长并,线段树,扫描法)
    【 HDU 1255】 覆盖的面积(矩阵面积交,线段树,扫描法)
    【HDU 1542】Atlantis 矩形面积并(线段树,扫描法)
    【BZOJ 2333 】[SCOI2011]棘手的操作(离线+线段树|可并堆-左偏树)
    【20161108】总结
    【BZOJ 3110】 [Zjoi2013]K大数查询(整体二分)
    【Bzoj 3295】 动态逆序对(树套树|CDQ分治)
  • 原文地址:https://www.cnblogs.com/libin6505/p/6826627.html
Copyright © 2020-2023  润新知