JavaBean与Map之间的互相转换

为什么需要将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 版权协议,转载请附上原文出处链接和本声明。