Map与 Object转换

来源:互联网 发布:网络借贷办法 编辑:程序博客网 时间:2024/05/06 11:24

Map与 Object互相转换的三种方式

不知道从哪里看到的,写成博客记录下,防止以后忘记

使用org.apache.commons.beansutils进行转换
    public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {            if (map == null)              return null;          Object obj = beanClass.newInstance();          org.apache.commons.beanutils.BeanUtils.populate(obj, map);          return obj;      }        public static Map<?, ?> objectToMap(Object obj) {          if(obj == null)              return null;           return new org.apache.commons.beanutils.BeanMap(obj);      }    
使用java.beans.Introspector进行转换
    public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {            if (map == null)               return null;            Object obj = beanClass.newInstance();          BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();            for (PropertyDescriptor property : propertyDescriptors) {              Method setter = property.getWriteMethod();                if (setter != null && map.containsKey) {                  setter.invoke(obj, map.get(property.getName()));               }          }          return obj;      }        public static Map<String, Object> objectToMap(Object obj) throws Exception {            if(obj == null)              return null;              Map<String, Object> map = new HashMap<String, Object>();           BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());            PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();            for (PropertyDescriptor property : propertyDescriptors) {                String key = property.getName();                if (key.compareToIgnoreCase("class") == 0) {                   continue;              }              Method getter = property.getReadMethod();              Object value = getter!=null ? getter.invoke(obj) : null;              map.put(key, value);          }            return map;      }   
使用reflect
    public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {            if (map == null)              return null;            Object obj = beanClass.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()));           }           return obj;        }        public static Map<String, Object> objectToMap(Object obj) throws Exception {            if(obj == null){                return null;            }           Map<String, Object> map = new HashMap<String, Object>();            Field[] declaredFields = obj.getClass().getDeclaredFields();            for (Field field : declaredFields) {                field.setAccessible(true);              map.put(field.getName(), field.get(obj));          }            return map;      }    
原创粉丝点击