控制器中组合参数的传递

组合参数就是类对象参数数组和其他一些变量可能需要在前端通过拼接一个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 的方式强制转化,否则会提示转换失败。(可能是我没找到方法)。

原文地址:https://www.cnblogs.com/lpq21314/p/13304542.html