簡單描述:看同事提交的代碼,發現有一行代碼 似曾相識,但卻朦朦朧朧,ε=(´ο`*)))唉很明顯自己沒掌握唄,於是乎,就百度了一下
干貨:對進行泛型的反序列化,使用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的值