利用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 8中,将List转换为Map对象是一种非常实用的技术,特别是在处理大规模数据时非常有用。本文将详细介绍在Java 8中将List转换为Map对象的方法,并提供了多种实现方式。 ...
- 如果XML结构简单,没有复杂的嵌套,可以使用JAXB将XML解析为Java对象,然后手动将其转换为Map。例如,如果你有一个只有一个根元素且没有子元素的XML,你可以创建一个对应的Java类,并使用JAXB的`Unmarshaller....
在这个方法中,我们创建了一个`ObjectMapper`实例,它是Jackson库的核心类,用于进行JSON与Java对象之间的映射。`readValue`方法接受两个参数:一个是JSON文件的路径,另一个是目标类型,这里是`Map.class`。 现在...
例如,在上面的代码中,maptoXml方法将Map对象转换为xml字符串。该方法首先创建了一个Document对象,然后添加一个node元素,接着遍历Map对象的keySet,生成key元素,并将其添加到node元素中。最后,使用doc2String...
总结起来,将Map转换为Java实体对象是Java开发中常见的需求,我们可以利用Core Java JDK 1.8的泛型和反射来实现这一功能。通过创建一个通用的工具类,我们可以简化代码并提高代码复用性。在使用过程中,需要注意处理...
在Java开发中,特别是在使用Spring框架时,将数据库中的数据转换为Map对象是一种常见的操作。这样做可以简化数据处理,使得数据以键值对的形式存储,便于快速查找和使用。Spring框架提供了强大的数据访问抽象,包括...
在本主题中,我们将深入探讨如何使用Java反射机制将Map转换为Java对象,同时支持Boolean和Date类型的数据。这种转换在处理JSON到对象的映射或者数据库查询结果到对象的映射时非常有用。 首先,我们需要了解Java中的...
Java代码Map转Object对象
1. 将Java对象转换为JSON字符串,同样使用`ObjectMapper`: ```java User john = new User(1, "John", "john@example.com"); String johnJson = mapper.writeValueAsString(john); ``` 2. 对于集合类型,如List或...
将xml串转换成Map类型,如果有重复节点,自动转换为list类型存储,所以最终转换并非绝对Map
本示例将详细介绍如何对Java对象属性Map进行排序。 首先,了解Map的基本类型。Java提供了HashMap、TreeMap等实现Map接口的类。HashMap是非排序的,而TreeMap是基于红黑树数据结构,会按照键的自然顺序或者自定义...
"java对象转对象插件"旨在简化这个过程,提供了一种便捷的方式来将Java对象转换为Map、List、Set或其他对象,提高了开发效率。下面将详细介绍这个插件的工作原理、使用方法及其优势。 首先,Java对象到Map的转换是...
将Pojo对象转换为Map,可以简化数据处理过程,尤其是在JSP页面上展示数据时,Map的灵活性更加突出。本文将详细介绍如何实现Java中的Pojo到Map的转换,并通过具体的示例来演示这一过程。 首先,我们需要一个Pojo类,...
首先,Fastjson是阿里巴巴开源的一个高性能的JSON库,它不仅支持JSON到Java对象的解析和序列化,还提供了方便的Java Bean到JSON以及JSON到Java Bean的转换功能。 1. **Fastjson进行Java Bean到Map的转换**: 使用...
在Java编程中,XML(可扩展标记语言)是一种用于存储和传输数据的标准化格式,而Map是Java集合框架中的一个重要接口,它提供了键值对的数据结构。将XML与Map进行互转是常见的需求,特别是在处理配置文件或者进行数据...
可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...
6. **`ezmorph-1.0.6.jar`**:EZMorph库主要用于Java对象的动态转换,虽然不是直接用于JSON转换,但在需要将Java对象转换成适合JSON格式的类型时,可能会用到。 在实际应用中,如果你对JSON的结构有严格的要求,如...
通过引用【opevcsv】依赖,逐行读取数据 并转为Map,Object>格式,后续可以通过BeanUtil.MaptoBean()方法将map转为你需要的bean对象; csv文件必须带表头,bean对象命名符合驼峰格式; 通过此方法可以快速的将文件...
在 Java 中,可以使用多种方法将 json 转换为 map,本文讨论了使用 JSONObject 和 ListOrderedMap 将 json 转换为 map 的方法。将 json 转换为 map 可以方便地操作和存储数据,提高数据处理效率,实现数据共享。
- **Java中的JSON转换**:在Java中,我们可以使用如Jackson、Gson、Fastjson等库将Java对象转换为JSON字符串。例如,Jackson库的`ObjectMapper`类提供了`writeValueAsString()`方法,可以将Java对象转换为JSON字符...