最近遇到一个问题,一个添加接口,需要添加三个对象,而且这三个对象里面的属性名很多都是一样的,本来是拿三个对象直接接收值,但是因为很多属性名都一样,所以接收不到值。百度也有的说把这三个对象的参数重命名然后整成一个对象传过来,但是相对于实体类里参数偏多的话,就很麻烦,整了半天终于找到解决办法
例如:
具体方法如下:
借助一个工具类
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) {
Map<Object,Object> map = new HashMap<>();
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();
}
String id=companyCheckhidden.getId();
if(id==null) {
companyCheckhidden.setId(CommonUtil.getUUID());
companyCheckhidden.setHiddenTime(new Date());
companyCheckhidden.setState("0");
companyCheckHiddenDao.insertCompanyCheckHidden(companyCheckhidden);
map.put(ConstantUtil.CODE,ConstantUtil.SUCCESS_STATUS);
map.put(ConstantUtil.MSG,"添加成功");
}else {
//修改企业隐患排查项
hiddenCheckCompanyItemDao.updatehiddencheckcompanyitem(hiddenCheckCompanyitem);
//修改企业自查隐患
companyCheckHiddenDao.updateCompanyCheckHidden(companyCheckhidden);
//修改检查项隐患分级标准库
companyCheckHiddenScaleDao.updateCompanyCheckHiddenScale(companyCheckHiddenscale);
map.put(ConstantUtil.CODE,ConstantUtil.SUCCESS_STATUS);
map.put(ConstantUtil.MSG,"修改成功");
}
return map;
}
postman测试:
{
"companyCheckhidden": {
"id": "1",
"name": "张三"
},
"hiddenCheckCompanyitem": {
"id": "2",
"name":"李四"
},
"companyCheckHiddenscale": {
"id": "3",
"name":"王五"
}
}