• springMVC绑定json参数之二(2.2.3)


    二、springmvc 接收不同格式的json字符串

    4).格式四:json传递复杂对象(对象中有属性,还有List)

    复杂对象:

    package testVO;
    
    import java.util.List;
    
    public class Test {
        
        private List<User> uu;
        private String jsonObjName; 
        private Integer id;
    
        public String getJsonObjName() {
            return jsonObjName;
        }
    
        public void setJsonObjName(String jsonObjName) {
            this.jsonObjName = jsonObjName;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public List<User> getUu() {
            return uu;
        }
    
        public void setUu(List<User> uu) {
            this.uu = uu;
        }
        
    }

    其中User中还有如下属性(有一个User[]属性来接收的,下一节会将之变成List[]进行测试):

        private String userName;
        private String address;
        private User[] users;

    前台构造复杂对象传递:

    test = function () {
            //创建复杂的js对象    
            var test = {};
            //给对象加属性(下面两种方式),名字要与后台复杂对象属性名一致
            test["jsonObjName"] = "jsonTest1";
            test.id = 30;
            //创建复杂属性对象List<User>,list在js中都是数组
            var userList = [];
            var user1 = {};
            user1["userName"] = "u1";
            user1["address"] = "add1";
            
            //创建user中的User[]属性对应的js对象
            var userattr = [];
            var user2 = {};
            user2["userName"] = "u2";
            user2["address"] = "add2";
            userattr.push(user2);
            //User对象中有一个变量名为users的数组,private User[] users;这里就是加入该属性
            user1["users"] = userattr;
            userList.push(user1);
            
            //复杂属性加入到js对象中
            test["uu"] = userList;
            
            //传递构造的js到后台
            jQuery.ajax({  
                url : cur_url+"/weekly/test",  
                type : 'post',  
                data : JSON.stringify(test),  
                dataType : 'json',
                contentType:'application/json;charset=utf-8',
                success : function (data, textStatus) { 
                    console.info(data);
                    alert("test success!");
                },
                error:function(){
                    alert("test error!");
                }
            });
        };

    后台接收:

    @RequestMapping("/test")
            @ResponseBody
            public List<User> test(@RequestBody Test tt) {
                for (User user : tt.getUu()) {
                     System.out.println("user:" + user);
                     System.out.println("userName:" + user.getUserName());
                     System.out.println("address:" + user.getAddress());
                     User[] attr = user.getUsers();
                     for (int i = 0; i < attr.length; i++) {
                        System.out.println("attr>>>" + attr[i]);
                        System.out.println("attr_userName>>>" + attr[i].getUserName() );
                        System.out.println("attr_address>>>" + attr[i].getAddress());
                    }
                }
               
                return tt.getUu();
                 
             }

    这样可以正常绑定
    下一节验证后台中复杂对象中用List和数组接收效果是否一致。

  • 相关阅读:
    NSNotificationCenter 使用姿势详解
    自动监测内存泄漏
    Xcode 8:在 Active Compilation Conditions 中自定义环境变量
    iOS 10 推送必看(高阶1)
    iOS10 推送必看(基础篇)
    Xcode 8 用处不大的新特性:CLANG_WARN_INFINITE_RECURSION
    手动实现 KVO
    请谨慎使用 @weakify 和 @strongify
    UIImage图片处理,旋转、截取、平铺、缩放等操作
    Xcode代码格式化教程,可自定义样式
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/6768269.html
Copyright © 2020-2023  润新知