map的value為object怎么取?
利用commons.BeanUtils實現Obj和Map之間轉換,這種是最簡單,也是最經常用的
```java
public static Object mapToObject(Map map, Class beanClass)
throws Exception {undefined
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) {undefined
if (obj == null) {undefined
return null;
}
return new org.apache.commons.beanutils.BeanMap(obj);
}
```
利用java reflect完成Obj和Map之間的相互轉換
```java
public Map Obj2Map(Object obj) throws Exception{undefined
Map map=new HashMap();
Field[] fields = obj.getClass().getDeclaredFields();
for(Field field:fields){undefined
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
return map;
}
public Object map2Obj(Map map,Class clz) throws Exception{undefined
Object obj = clz.newInstance();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for(Field field:declaredFields){undefined
int mod = field.getModifiers();
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){undefined
continue;
}
field.setAccessible(true);
field.set(obj, map.get(field.getName()));
}
return obj;
}
```
利用Introspector完成Obj和Map之間的相互轉換
```java
public Map obj2Map(Object obj) throws Exception{undefined
Map map=new HashMap();
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {undefined
String key = property.getName();
if (key.compareToIgnoreCase("class") == 0) {undefined
continue;
}
Method getter = property.getReadMethod();
Object value = getter!=null ? getter.invoke(obj) : null;
map.put(key, value);
}