java中对象和Map的相互转换

Laughing
2021-08-25 / 0 评论 / 888 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年08月25日,已超过1278天没有更新,若内容或图片失效,请留言反馈。

实体对象转map集合

private static Map<String, String> obj2Map(Object obj) {

        Map<String, String> map = new HashMap<String, String>();
        // System.out.println(obj.getClass());  
        // 获取f对象对应类中的所有属性域  
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {
            String varName = field.getName();
            varName = varName.toLowerCase();//将key置为小写,默认为对象的属性  
            try {
                // 获取原来的访问控制权限  
                boolean accessFlag = field.isAccessible();
                // 修改访问控制权限  
                field.setAccessible(true);
                // 获取在对象f中属性fields[i]对应的对象中的变量  
                Object o = field.get(obj);
                if (o != null)
                    map.put(varName, o.toString());
                // System.out.println("传入的对象中包含一个如下的变量:" + varName + " = " + o);  
                // 恢复访问控制权限  
                field.setAccessible(accessFlag);
            } catch (IllegalArgumentException | IllegalAccessException ex) {
                ex.printStackTrace();
            }
        }
        return map;
    }

将map集合转化成实体对象利用反射实现

/**
     * Map转成实体对象
     * @param map map实体对象包含属性
     * @param clazz 实体对象类型
     * @return
     */
    public static <T> T map2Object(Map<String, Object> map, Class<T> clazz) {
        if (map == null) {
            return null;
        }
        T obj = null;
        try {
            obj = clazz.newInstance();
            Field[] fields = obj.getClass().getDeclaredFields();
            for (Field field : fields) {
                int mod = field.getModifiers();
                if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
                    continue;
                }
                field.setAccessible(true);
                field.set(obj, map.get(field.getName()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return obj;
    }
0

评论 (0)

取消