控制器中組合引數的傳遞
阿新 • • 發佈:2020-07-15
組合引數就是類物件引數陣列和其他一些變數可能需要在前端通過拼接一個json字串一次性傳入過來,格式如下:
控制器方法的定義如下:
@PostMapping("/api/dic/saveDicFieldList") public String saveDicFieldList(@RequestBody List<Object> fieldlist)
注意:物件引數必須要加 @RequestBody 宣告,否則無法傳遞;
然後在方法內部解析,比如獲取 {"autoid":245,"moduleno":202},通過以下程式碼獲取:
//取出第0個元素(包含 autoid 和 moduleno) Object obj = fieldlist.get(0); String jsonstr= JSON.toJSONString(obj); JSONObject jobj = JSONObject.parseObject(jsonstr); String autoid = jobj.getString("autoid"); String moduleno = jobj.getString("moduleno");
遍歷後面的物件陣列,通過以下方法:
//從第一個元素開始,迴圈儲存每個字典屬性 for(int i=1;i<fieldlist.size();i++){ Object obj_dtf = fieldlist.get(i); String jsonstr_dtf= JSON.toJSONString(obj_dtf); JSONObject jobj_dtf = JSONObject.parseObject(jsonstr_dtf); DicTypeField dtf = JSON.toJavaObject(jobj_dtf,DicTypeField.class); res = dtf.save(); }
把json物件轉為類物件,要用JSON.toJavaObject來轉換,不能直接用 (T)obj 的方式強制轉化,否則會提示轉換失敗。(可能是我沒找到方法)。