利用commons.BeanUtils实现Obj和Map之间转换,这种是最简单,也是最经常用的
public static Object mapToObject(Mapmap, 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 reflect完成Obj和Map之间的相互转换
public Map Obj2Map(Object obj) throws Exception{
Map map=new HashMap();
Field[] fields = obj.getClass().getDeclaredFields();
for(Field field:fields){
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
return map;
}
public Object map2Obj(Map map,Class> clz) throws Exception{
Object obj = clz.newInstance();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for(Field field:declaredFields){
int mod = field.getModifiers();
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
continue;
}
field.setAccessible(true);
field.set(obj, map.get(field.getName()));
}
return obj;
}
利用Introspector完成Obj和Map之间的相互转换
public Mapobj2Map(Object obj) throws Exception{ Map map=new HashMap (); 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; } public Object map2Obj(Map map,Class> clz) throws Exception{ if (map == null) return null; Object obj = clz.newInstance(); BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { Method setter = property.getWriteMethod(); if (setter != null) { setter.invoke(obj, map.get(property.getName())); } } return obj; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



