为什么需要将javaBean和map进行转换,在很多应用场景中,需要将key=value形式的数据与javaBean对象相互转换
JavaBean转Map
public static Map<String,Object> bean2map(Object obj) throws Exception{
//创建map对象
Map<String,Object> map = new HashMap<>();
//内省得到对象的所有属性描述对象
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass(),Object.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pds){
//获取属性名作为map中的key
String key = pd.getName();
//获取属性的get方法进行调用,得到该对象该属性的value
Object value = pd.getReadMethod().invoke(obj);
//将值存入map中
map.put(key,value);
}
return map;
}
Map转JavaBean
public static <T> T map2bean(Map<String,Object> map,Class<T> clz) throws Exception{
//创建javaBean对象
T obj = clz.newInstance();
//获取对象的所有属性
BeanInfo beanInfo = Introspector.getBeanInfo(clz,Object.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
//遍历所有属性
for (PropertyDescriptor pd : pds){
//获取属性的名字作为key去map中取数据
String key = pd.getName();
//从map中取出数据存入到对象中
Object value = map.get(key);
pd.getWriteMethod().invoke(obj,value);
}
return obj;
}
这里的泛型方法方便调用者获得真实对象,不用强转
版权声明:本文为cylcjsg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。