JavaBean对象与Map对象互相转换

来源:互联网 发布:java 众筹 开源 编辑:程序博客网 时间:2024/05/04 05:58


/** * 把map转换成对象 * @param type  被转换的对象类型 * @param map   map * @return obj 返回对象 */public static Object convertMap(Class type, Map map) {BeanInfo beanInfo;Object obj = null;try {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().toUpperCase();if (map.containsKey(propertyName)) {Object value = map.get(propertyName);Object[] args = new Object[1];args[0] = value;descriptor.getWriteMethod().invoke(obj, args);}}} catch (Exception e) {e.printStackTrace();}return obj;}

/**     * 将一个 JavaBean 对象转化为一个  Map     * @param bean 要转化的JavaBean 对象     * @return 转化出来的  Map 对象     * @throws IntrospectionException 如果分析类属性失败     * @throws IllegalAccessException 如果实例化 JavaBean 失败     * @throws InvocationTargetException 如果调用属性的 setter 方法失败     */    public static Map convertBean(Object bean)            throws IntrospectionException, IllegalAccessException, InvocationTargetException {        Class type = bean.getClass();        Map returnMap = new HashMap();        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 = readMethod.invoke(bean, new Object[0]);                if (result != null) {                    returnMap.put(propertyName, result);                } else {                    returnMap.put(propertyName, "");                }            }        }        return returnMap;    }


0 0
原创粉丝点击