直接上代码了把
这是Map转换为对象
/** * Map中的数据 ===> 对象中 * @author Chenaniah Cheng * @create 2019-05-12 */ public class MapToObjectUtil { //第二步:在执行之前 我们约定一下,map中的所有k-v都与对象中的字段名称一致 没有对象中不存在的字段 public Object changeToObject(Map<String,Object> map, Object obj) throws IllegalAccessException { //第一步,通过反射放入值 Class clazz=obj.getClass(); Field[] fields = clazz.getDeclaredFields(); //第二步: for(Field filed : fields){ //允许外界访问 filed.setAccessible(true); //1.map中没有对应该字段的值 //2.Map中的值是Object类型的,会不会遇到存放值不匹配的,报异常的情况 if(map.get(filed.getName())!=null && filed.getType()!= BigDecimal.class){ filed.set(obj,map.get(filed.getName())); } //3.存放BigDecimal的时候报错 //4.扩展问题,如果遇到还有其他属性不能放入进去,那么继续 && ? if(filed.getType()== BigDecimal.class){ String val =map.get(filed.getName()).toString(); BigDecimal bigDecimal = new BigDecimal(val); filed.set(obj,bigDecimal); } } return obj; }
这是对象转换为Map
/** * 该工具类是 对象不为空的字段 ===> Map * @author Chenaniah Cheng * @create 2019-05-12 */ public class ObjectToMapUtil { //该方法就是把对象传进来 转换为Map再返回回去 public Map<String,Object> changeToMap(Object obj, Map<String,Object> map){ Class clazz=obj.getClass(); //获取所有的字段 Field[] fields = clazz.getDeclaredFields(); for(Field filed : fields){ System.out.println("字段名称:"+filed.getName()); try { filed.setAccessible(true); Object val=filed.get(obj); if(val != null){ map.put(String.valueOf(filed.getName()),val); } } catch (IllegalAccessException e) { e.printStackTrace(); } } return map; } }