简单描述:看同事提交的代码,发现有一行代码 似曾相识,但却朦朦胧胧,ε=(´ο`*)))唉很明显自己没掌握呗,于是乎,就百度了一下
干货:对进行泛型的反序列化,使用TypeReference可以明确的指定反序列化的类型,
代码:
//js代码 将form表单里的各种元素里的值组装成js对象,然后转成json串,ajax传递给后台 var planJson = JSON.stringify($("#addForm").serializeJson());
js调试结果:
//后台java代码
String planJson = request.getParameter("planJson"); if (!Tools.isEmpty(planJson)) { Plan plan = JSON.parseObject(planJson, new TypeReference<Plan>() { }); modelMap.addAttribute("plan", plan); }
说明:JSON.parseObject(planJson, new TypeReference<Plan>(){})是把字符串planjson转化为相应的JSONObject对象,“键值对”形式,然后通过new TypeReference<Plan>(){ }匿名内部类来吧planjson的JSONObject转化为Plan对象,注意一点,前台在做 $("#addForm").serializeJson() 处理的时候,form表单里还有许多隐藏域,不属于plan对象本身的属性,通过TypeReference只把属于plan对象属性的参数和值组装成plan对象 (个人理解,欢迎指正)
后台debug调试,plan的值