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; 
    } 
}

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

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

public class GsonPracticeUtil { public static void main(String[] args) { Gson gson = new Gson(); ...
  • u013399093
  • u013399093
  • 2016年01月14日 15:30
  • 2443

JavaBean对象与Map对象互相转化

package com.recommend.utils; import java.beans.BeanInfo; import java.beans.IntrospectionException; ...
  • jiutianhe
  • jiutianhe
  • 2014年10月31日 16:37
  • 5541

Map与JavaBean之间的相互转化

在做导入的时候,遇到了需要将map对象转化 成javabean的问题,也就是说,不清楚javabean的内部字段排列,只知道map的 key代表javabean的字段名,value代表值。 那现...
  • dongzhouzhou
  • dongzhouzhou
  • 2013年03月12日 16:47
  • 8565

Java bean 与 Map的相互转换

/** * 将bean转化为map * 注意: * 1. Bean必须实现getter和setter方法 * 2. 请避开CLASS_TYPE属性命名 ...
  • qq_17612199
  • qq_17612199
  • 2017年03月10日 11:04
  • 105

Java_jackson_bean/map/list与json相互转换

1. 下载(免积分)
  • wuqinfei_cs
  • wuqinfei_cs
  • 2014年11月20日 19:19
  • 6212

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

public class GsonPracticeUtil { public static void main(String[] args) { Gson gson = new Gson(); ...
  • u013399093
  • u013399093
  • 2016年01月14日 15:30
  • 2443

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
  • 179

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

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

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

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

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

java bean、List、数组、map和Json的相互转化 工程  json包为  代码 package com.my.json; public class...
  • u011568312
  • u011568312
  • 2016年08月14日 11:18
  • 3140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Bean、Map相互转换
举报原因:
原因补充:

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