package com.JUtils.beanConvert; 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; /** * Bean与Map的转换 * * @since 1.0.0 */ public class BeanMapConvert { /** * Bean转换为Map * * @param * @return String-Object的HashMap * @since v1.0.0 */ public static void main(String[] args) { //Bean转换为Map Berth b = new Berth("45", 55d, 65d, 6565d, 63d, 9666l, 9656l, "fgj"); Map<String, Object> stringObjectMap = bean2MapObject(b); System.out.println("Bean转换为Map "+stringObjectMap); //Map转换为Bean Map<String,Object> map = new HashMap<String,Object>(); map.put("berthId","berthId"); map.put("coastBearing",6556d); map.put("faceBearing",5645d); map.put("lat",6896868d); map.put("lon",6868868d); map.put("ppdAta",525l); map.put("sldAta",66666l); map.put("type","fdgfd"); Berth nn = new Berth(); Object o = map2Bean(map, nn); System.out.println("Map转换为Bean "+o); } public static Map<String,Object> bean2MapObject(Object object){ if(object == null){ return null; } Map<String, Object> map = new HashMap<String, Object>(); try { //Introspector类: // 将JavaBean中的属性封装起来进行操作。在程序把一个类当做JavaBean来看, // 就是调用Introspector.getBeanInfo()方法,得到的BeanInfo对象封装了把这个类当做JavaBean的结果信息,即属性的信息。 BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); // 过滤class属性 if (!key.equals("class")) { // 得到property对应的getter方法 Method getter = property.getReadMethod(); Object value = getter.invoke(object); map.put(key, value); } } } catch (Exception e) { e.printStackTrace(); } return map; } /** * Map转换为Java Bean * * @param map * 待转换的Map * @param object * Java Bean * @return java.lang.Object */ public static Object map2Bean(Map map,Object object){ if(map == null || object == null){ return null; } try { BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); if (map.containsKey(key)) { Object value = map.get(key); // 得到property对应的setter方法 Method setter = property.getWriteMethod(); setter.invoke(object, value); } } } catch (IntrospectionException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } return object; } }