• SpringMVC传入多个对象


    最近遇到一个问题,一个添加接口,需要添加三个对象,而且这三个对象里面的属性名很多都是一样的。

    本来是拿三个对象直接接收值,但是因为很多属性名都一样,所以接收不到值。

    百度也有的说把这三个对象的参数重命名然后整成一个对象传过来,但是相对于实体类里相同参数偏多的话,就很麻烦。

    最后解决办法如下:

     例如:

    具体方法如下:

    借助fastjson工具类

    package com.infohold.city.map.util;
    
    import java.util.Map;
    
    import com.alibaba.fastjson.JSON;
    
    public class JsonXMLUtils {
    	public static String obj2json(Object obj) throws Exception {
            return JSON.toJSONString(obj);
        }
    
        public static <T> T json2obj(String jsonStr, Class<T> clazz) throws Exception {
            return JSON.parseObject(jsonStr, clazz);
        }
    
        public static <T> Map<String, Object> json2map(String jsonStr) throws Exception {
                return JSON.parseObject(jsonStr, Map.class);
        }
      
        public static <T> T map2obj(Map<?, ?> map, Class<T> clazz) throws Exception {
            return JSON.parseObject(JSON.toJSONString(map), clazz);
        }
    }
    

    接下来controller层传值

    /**
    	 * 
    	 * 企业自查隐患--添加+修改
    	 */
    	@RequestMapping(value = "insertcompanycheckhidden", method = {RequestMethod.POST,RequestMethod.GET})
    	@ResponseBody
    	public RestResponse<Object> insertCompanyCheckHidden(@RequestBody Map<String, Object> models){
    		return wrap(companyCheckHiddenService.insertCompanyCheckHidden(models));
    	}
    

    service代码如下

    @Override
    	public Object insertCompanyCheckHidden(Map<String, Object> models) {
    		CompanyCheckHidden companyCheckhidden = null;
    		HiddenCheckCompanyItem hiddenCheckCompanyitem = null;
    		CompanyCheckHiddenScale companyCheckHiddenscale = null;
    		try {
    			companyCheckhidden = JsonXMLUtils.map2obj((Map<String, Object>)models.get("companyCheckhidden"),CompanyCheckHidden.class);
    			hiddenCheckCompanyitem=JsonXMLUtils.map2obj((Map<String, Object>)models.get("hiddenCheckCompanyitem"),HiddenCheckCompanyItem.class); 
    			companyCheckHiddenscale=JsonXMLUtils.map2obj((Map<String, Object>)models.get("companyCheckHiddenscale"),CompanyCheckHiddenScale.class); 
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		//其他逻辑。。。。。。。。。
    		return xxx;
    	}
    

    postman测试该添加接口:

    {
    	"companyCheckhidden": {
    		"id": "1",
    		"name": "张三"
    	},
    	"hiddenCheckCompanyitem": {
    		"id": "2",
    		"name":"李四"
    	},
    	"companyCheckHiddenscale": {
    		"id": "3",
    		"name":"王五"
    	}
    	
    }
    
  • 相关阅读:
    求两个数的最大公约数--简单
    输入7个人的成绩,找出大于平均成绩的值--简单
    回文--简单
    约瑟夫环--中等难度
    数组中查找最大数和次大数--简单
    Docker在云环境中的应用实践初探:优势、局限性与效能评测
    基于mongoDB的capped collection的性能优化
    微软开放技术(中国)携 CKAN 和 OData 技术引入基于 Azure 的开放数据平台
    ThreadPoolExecutor原理及使用
    通过 Azure Media Encoder 降低编码成本
  • 原文地址:https://www.cnblogs.com/supiaopiao/p/8534317.html
Copyright © 2020-2023  润新知