Bean、Map相互转换
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; 
    } 
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hichinamobile/article/details/51564297
个人分类: java
想对作者说点什么? 我来说一句

json_jackson_junit_demo.zip

2014年11月23日 12.34MB 下载

json转换bean

2013年04月24日 29KB 下载

beanmap之间转换的帮助类

2014年08月27日 5KB 下载

JSON使用例子

2015年07月05日 1.14MB 下载

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

2011年03月04日 1.63MB 下载

json所需jar包

2015年02月04日 1.42MB 下载

没有更多推荐了,返回首页

不良信息举报

Bean、Map相互转换

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭