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":"王五"
    	}
    	
    }
    
  • 相关阅读:
    安装了windows mobile 5.0 pocket pc SDK
    落户这里
    NOIP 2021 游记
    log4net重复记日志
    Eclipse中properties文件中文显示编码、乱码问题
    查找包下已经实施的增强
    vs2010 编译 Ogre 1.8 源码
    Ogre 设计模式之Singleton
    23种设计模式的解析与C++实现及源码打包下载
    vs2010 编译 SALVIA源码
  • 原文地址:https://www.cnblogs.com/supiaopiao/p/8534317.html
Copyright © 2011-2022 走看看