利用java反射机制实现map和java对象的互相转换
------------------------------------------------------
1)java对象-》map
/** * @description 接收DTO Object对象,转换成Map类型 * DTO里的属性名称是Map里的key * @param obj 需要转换的DTO对象 * @return Map */ @SuppressWarnings("unchecked") public static Map dtoToMap(Object obj){ Map map = new HashMap(); if(null != obj ){ Class cla = obj.getClass(); do{ Field[] fields = cla.getDeclaredFields(); for(Field field : fields ){ String name = field.getName(); try { Method method = cla.getMethod("get"+initCap(name), null); map.put(name, method.invoke(obj, null)); } catch (Exception e) { e.printStackTrace(); fields = null; } } //获取父类属性 cla = cla.getSuperclass(); }while(cla != Object.class); } return map; } /**s * @description 替换DTO属性名称首字母为大写 如:name-->Name * @param attr * @return 大写形式的属性名称 */ private static String initCap(String attr){ return attr.substring(0, 1).toUpperCase()+attr.substring(1); }
-----------------------------------------------------
2)map-》java对象
/** * @description 接收Map和转换目标对象的相对路径,实现Map集合到List的DTO集合的转换 * @param map * @param className 转换目标对象的相对路径 * @return List */ @SuppressWarnings("unchecked") public static List mapToDto(Map map, String className){ List list = new ArrayList(); if(null != map && null != className && !"".equals(className)){ Iterator iter = map.entrySet().iterator(); Object dto = null; while(iter.hasNext()){ Map.Entry entry = (Map.Entry)iter.next(); Object obj = entry.getValue(); if(null != obj && obj instanceof Map ){ HashMap m = (HashMap)obj; try { Class cla = Class.forName(className); dto = cla.newInstance(); do{ Field[] fields = cla.getDeclaredFields(); for(Field fiel : fields ){ Object val = m.get(fiel.getName()); if(val != null){ Class type = fiel.getType(); setter(dto, fiel.getName(), getFieldValToObj(val, type.getName()), type); } } cla = cla.getSuperclass(); }while(cla != Object.class); } catch (Exception e) { e.printStackTrace(); } } list.add(dto); } map.clear(); map = null; } return list; } private static Object getFieldValToObj(Object val, String tName){ if("java.lang.Integer".equals(tName)){ val = Integer.parseInt(val.toString()); }else if("java.lang.Double".equals(tName)){ val = Double.parseDouble(val.toString()); }else if("java.lang.Float".equals(tName)){ val = Float.parseFloat(val.toString()); }else if("java.lang.Long".equals(tName)){ val = Long.parseLong(val.toString()); }else if("java.lang.Boolean".equals(tName)){ val = Boolean.parseBoolean(val.toString()); }else if("java.lang.Byte".equals(tName)){ val = Byte.parseByte(val.toString()); }else if("java.lang.Short".equals(tName)){ val = Short.parseShort(val.toString()); }else if("java.sql.Timestamp".equals(tName)){ Object ts = val; val = Timestamp.valueOf(ts.toString()); } return val; } /** * @description 通过反射机制,回调接收的DTO对象,并调用set方法存值 * @param obj DTO实例对象 * @param field DTO对象的属性名 * @param value 属性名称的值 * @param ftype 属性的数据类型 */ @SuppressWarnings("unchecked") private static void setter(Object obj, String field, Object value, Class ftype){ try { Method method = obj.getClass().getMethod("set"+initCap(field), ftype); method.invoke(obj, value); } catch (Exception e) { e.printStackTrace(); } } /** * @description 转换DTO属性首字母为大写形式 name-->Name * @param attr 属性名称 * @return 属性名称的大写形式 */ private static String initCap(String attr){ return attr.substring(0, 1).toUpperCase()+attr.substring(1); }
相关推荐
主要介绍了在Java 8中将List转换为Map对象方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
Java代码Map转Object对象
json格式与java类对象相互转换。json格式转换成java类对象,List,Map。类对象转换成json。
通过引用【opevcsv】依赖,逐行读取数据 并转为Map,Object>格式,后续可以通过BeanUtil.MaptoBean()方法将map转为你需要的bean对象; csv文件必须带表头,bean对象命名符合驼峰格式; 通过此方法可以快速的将文件...
使用 Core Java JDK1.8,将Map对象转换成Java实体对象的工具类完整代码。仅供交流学习。
java转换xml、list、map和json
将java对象list或者map转json数据不需要第三方包,直接使用就可以了,如果你传入的数据不确定是map类型还是list类型,那么自己处理一下就可以了(判断下类型,传入参数改为object)。 如果是json数据转成java对象list...
Java Bean对象和Map相互转换 使用Fastjson 和BeanMap 两种方式进行转换
将一个 Map对象转化为JavaBean的形式返回,抛弃一些出现异常的问题与方法,遵循Java开发规范
Bean与MAP间互转换的工具类。 1.将一个 Map 对象转化为一个 JavaBean,可指定BEAN的类型; 2.将一个 JavaBean 对象转化为一个 HashMap;
NULL 博文链接:https://chinesethink.iteye.com/blog/1601198
json 转为map Java
可以将对象转map,list,set,或者对象. 方便人们的使用.
可转化JAVA对象(bean,list,map,set)。如果要求返回的JSON对象有严格的要求此包不适用,不推荐下载了。
Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛。最近工作的过程中也是经常有,因此,自己封装了一个类分享给大家。
在java中使用反射将map转换成成对应的对象,所使用的jar
JSONObject是Map接口的一个实现类 json转map的6种实现方法,可根据自己的喜好进行选择
将java实体类转换为map mybatis里用map更方便
一个json相互转换的万能java类... * 将java对象转换成json字符串,并设定日期格式 * @param javaObj * @param dataFormat * @return */ /** *//** * JSON 时间解析器具 * @param datePattern * @return */
commons-collections.jar org/apache/commons/collections/map/ListOrderedMap commons-lang-2.4.jar org/apache/commons/lang/exception/NestableRuntimeException commons-logging-1.1.1.jar org/apache/commons/...