类型转换发放(jsonToMap,Map到实体类,实体类到map)

1.jsonToMap
********************************************
public static Map jsonToMap(String jsonStr) {
        net.sf.json.JSONObject jo = net.sf.json.JSONObject.fromObject(jsonStr);
        Map<String, Class> classMap = new HashMap<String, Class>();
        classMap.put("extend", HashMap.class);
        Map<String, Object> retMap = (Map<String, Object>) net.sf.json.JSONObject.toBean(jo, HashMap.class, classMap);
        return retMap;
    }

2.Map到实体类
public static <T> T toBean(Class<T> clazz, Map map) {  
        T obj = null;  
        try {  
            BeanInfo beanInfo = Introspector.getBeanInfo(clazz);  
            obj = clazz.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);  
                    if ("".equals(value)) {  
                        value = null;  
                    }  
                    Object[] args = new Object[1];  
                    args[0] = value;  
                    try {  
                        descriptor.getWriteMethod().invoke(obj, args);  
                    } catch (InvocationTargetException e) {  
                        System.out.println("字段映射失败");  
                    }  
                }  
            }  
        } catch (IllegalAccessException e) {  
            System.out.println("实例化 JavaBean 失败");  
        } catch (IntrospectionException e) {  
            System.out.println("分析类属性失败");  
        } catch (IllegalArgumentException e) {  
            System.out.println("映射错误");  
        } catch (InstantiationException e) {  
            System.out.println("实例化 JavaBean 失败");  
        }  
        return (T) obj;  
    }  
*************************************************************************************
3.实体类到map
public static Map toMap(Object bean) {  
        Class<? extends Object> clazz = bean.getClass();  
        Map<Object, Object> returnMap = new HashMap<Object, Object>();  
        BeanInfo beanInfo = null;  
        try {  
            beanInfo = Introspector.getBeanInfo(clazz);  
            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;  
                    result = readMethod.invoke(bean, new Object[0]);  
                    if (null != propertyName) {  
                        propertyName = propertyName.toString();  
                    }  
                    if (null != result) {  
                        result = result.toString();  
                    }  
                    returnMap.put(propertyName, result);  
                }  
            }  
        } catch (IntrospectionException e) {  
            System.out.println("分析类属性失败");  
        } catch (IllegalAccessException e) {  
            System.out.println("实例化 JavaBean 失败");  
        } catch (IllegalArgumentException e) {  
            System.out.println("映射错误");  
        } catch (InvocationTargetException e) {  
            System.out.println("调用属性的 setter 方法失败");  
        }  
        return returnMap;  
    } 

posted @ 2017-08-31 13:46  枫沫  阅读(965)  评论(0编辑  收藏  举报