zoukankan      html  css  js  c++  java
  • 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":"王五"
    	}
    	
    }
    
  • 相关阅读:
    sql in not in 案例用 exists not exists 代替
    根据算法规则进行匹配相似车辆
    随机生成临时车牌号
    无法加载 DLL“ParkCOM.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E) 终结者
    c# 除掉前三个字符,剩下的4个字符全为数字方为特殊车辆
    UI设计文本框解决Placeholder的在IE10 以下 IE 9 IE8 IE 7 的兼容问题
    EF框架 对字段属性为NULL的空值处理 类型前面加上?保证EF列表读取显示数据不会报异常
    boost::property_tree读取解析.xml文件
    C++ URLencode library
    http与中文编码传输
  • 原文地址:https://www.cnblogs.com/supiaopiao/p/8534317.html
Copyright © 2011-2022 走看看