控制器中组合参数的传递

Posted lpq21314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了控制器中组合参数的传递相关的知识,希望对你有一定的参考价值。

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

以上是关于控制器中组合参数的传递的主要内容,如果未能解决你的问题,请参考以下文章

通过导航组件在底部导航片段之间传递数据

将接口从片段传递到kotlin中的活动

如何绕过将数据模型传递给片段参数以避免事务太大异常?

操作栏选项卡:使用多次实例化的单个片段时如何传递参数

在C代码中将结构体变量作为参数传递效率忒低

在android中动态创建选项卡并使用传入的参数加载片段