Bean、Map相互转换

原创 2016年06月02日 10:17:31
package com.base.pf.common.util;
import java.beans.BeanInfo; 
import java.beans.IntrospectionException; 
import java.beans.Introspector; 
import java.beans.PropertyDescriptor; 
import java.lang.reflect.InvocationTargetException; 
import java.lang.reflect.Method; 
import java.util.HashMap; 
import java.util.Map; 

public class BeanToMapUtils { 
   
    /** 
     * 将一个 Map 对象转化为一个 JavaBean 
     * @param type 要转化的类型 
     * @param map 包含属性值的 map 
     * @return 转化出来的 JavaBean 对象 
     * @throws IntrospectionException 
     *             如果分析类属性失败 
     * @throws IllegalAccessException 
     *             如果实例化 JavaBean 失败 
     * @throws InstantiationException 
     *             如果实例化 JavaBean 失败 
     * @throws InvocationTargetException 
     *             如果调用属性的 setter 方法失败 
     */ 
    public static Object convertMap(Class type, Map map)  { 
        Object obj = null;
		try {
			// 获取类属性 
			BeanInfo beanInfo = Introspector.getBeanInfo(type);
			 obj = type.newInstance(); // 创建 JavaBean 对象 
			// 给 JavaBean 对象的属性赋值 
			PropertyDescriptor[] propertyDescriptors =  beanInfo.getPropertyDescriptors(); 
			for (int i = 0; i< propertyDescriptors.length; i++) { 
				PropertyDescriptor descriptor = propertyDescriptors[i]; 
				String propertyName = descriptor.getName(); 
				if (map.containsKey(propertyName)) { 
					// 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。 
					Object value = map.get(propertyName); 
					Object[] args = new Object[1]; 
					args[0] = value; 
					descriptor.getWriteMethod().invoke(obj, args); 
				} 
			} 
		} catch (IntrospectionException e) {
			e.printStackTrace();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		} 
        return obj; 
    } 

    /** 
     * 将一个 JavaBean 对象转化为一个  Map 
     * @param bean 要转化的JavaBean 对象 
     * @return 转化出来的  Map 对象 
     * @throws IntrospectionException 如果分析类属性失败 
     * @throws IllegalAccessException 如果实例化 JavaBean 失败 
     * @throws InvocationTargetException 如果调用属性的 setter 方法失败 
     */ 
    @SuppressWarnings("unchecked")
	public static Map convertBean(Object bean) 
            { 
        Class type = bean.getClass(); 
        Map returnMap = new HashMap(); 
		try {
			BeanInfo	beanInfo = Introspector.getBeanInfo(type);
			PropertyDescriptor[] propertyDescriptors =  beanInfo.getPropertyDescriptors(); 
			for (int i = 0; i< propertyDescriptors.length; i++) { 
				PropertyDescriptor descriptor = propertyDescriptors[i]; 
				String propertyName = descriptor.getName(); 
				if (!propertyName.equals("class")) { 
					Method readMethod = descriptor.getReadMethod();
					Object result = null;
					try{
						 result = readMethod.invoke(bean, new Object[0]);
					}catch(Exception e){
						e.printStackTrace();
					}
					if (result != null) {
						returnMap.put(propertyName, result);
					} else { 
						returnMap.put(propertyName, ""); 
					} 
				} 
			} 
		} catch (IntrospectionException e) {
			e.printStackTrace();
		}  catch (IllegalArgumentException e) {
			e.printStackTrace();
		} 
        return returnMap; 
    } 
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Java_jackson_bean/map/list与json相互转换

1. 下载(免积分)

Bean类和Map的相互转换

package com.htong_04; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans...
  • w_amwf
  • w_amwf
  • 2015年09月16日 19:05
  • 162

利用Gson使json字符串与java bean/list/map之间的相互转换

public class GsonPracticeUtil { public static void main(String[] args) { Gson gson = new Gson(); ...

List&lt;Bean&gt;转换为List&lt;Map&gt;

  • 2014年11月04日 22:02
  • 329KB
  • 下载

java bean、List、数组、map和Json的相互转化

java bean、List、数组、map和Json的相互转化 工程  json包为  代码 package com.my.json; public class...

Bean和Map相互转化-Java工具类(一)

import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector...
  • weifeib
  • weifeib
  • 2016年07月13日 11:05
  • 3701

xml和bean之间的相互转换源码

  • 2011年03月04日 23:43
  • 1.63MB
  • 下载

java 使用BeanInfo实现bean实体与map之间的互相转换

java 使用BeanInfo实现bean实体与map之间的互相转换。 public interface BeanInfo希望提供有关其 bean 的显式信息的 bean 实现者可以提供某个 B...

java中把对象、对象bean、list集合、对象数组、Map和Set以及字符串转换成Json

http://www.cnblogs.com/wggWeb/archive/2012/03/31/2427103.html 主要实现把java对常用的一些数据转换成Json,以便前台的调用,...

JAVA Map转换为Bean或VO

//压缩文件工具类 public class CompressTools { public static void zipCompression(String srcFile,String ...
  • fatOwen
  • fatOwen
  • 2011年03月04日 17:41
  • 5352
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Bean、Map相互转换
举报原因:
原因补充:

(最多只允许输入30个字)