java map转为实体类的方法

时间:2025-02-16 10:30:53
public static <T> T map2Object(Map<String, Object> map, Class<T> clazz) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (map == null) { return null; } T obj = null; try { // 使用newInstance来创建对象 obj = clazz.newInstance(); // 获取类中的所有字段 Field[] fields = obj.getClass().getDeclaredFields(); for (Field field : fields) { int mod = field.getModifiers(); // 判断是拥有某个修饰符 if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { continue; } // 当字段使用private修饰时,需要加上 field.setAccessible(true); // 获取参数类型名字 String filedTypeName = field.getType().getName(); // 判断是否为时间类型,使用equalsIgnoreCase比较字符串,不区分大小写 // 给obj的属性赋值 if (filedTypeName.equalsIgnoreCase("")) { String datetimestamp = (String) map.get(field.getName()); if (datetimestamp.equalsIgnoreCase("null")) { field.set(obj, null); } else { field.set(obj, sdf.parse(datetimestamp)); } } else { field.set(obj, map.get(field.getName())); } } } catch (Exception e) { e.printStackTrace(); } return obj; }