一、实体转map
public static void main(String[] args){ UserTest userTest = new UserTest("ceshi",25,234.5); Map<String,Object> dataMap = beanToMap(userTest); dataMap.forEach((k,v)->System.out.println("key:" + k + " val:" + v)); } public static Map<String, Object> beanToMap(Object obj) { Map<String, Object> params = new HashMap<>(0); try { //方法一 /*PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean(); PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj); for (int i = 0; i < descriptors.length; i++) { String name = descriptors[i].getName(); if (!"class".equals(name)) { params.put(name, propertyUtilsBean.getNestedProperty(obj, name)); } }*/ //方法二 /*BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor propertyDescriptor : propertyDescriptors){ String key = propertyDescriptor.getName(); if(!key.equals("class")){ Object value = propertyDescriptor.getReadMethod().invoke(obj); params.put(key,value == null ? "" : value); } }*/ //方法三 if (obj != null) { BeanMap beanMap = BeanMap.create(obj); for (Object key : beanMap.keySet()) { params.put(key+"", beanMap.get(key)); } } } catch (Exception e) { e.printStackTrace(); } return params; }
二、map转实体
public static void main(String[] args){ Map<String,Object> dataMap = new HashMap<>(); dataMap.put("name","ceshi"); dataMap.put("age",25); dataMap.put("salary",4.5); //方法一 UserTest userTest = convertMapToBean(UserTest.class,dataMap); System.out.println(userTest.toString()); //方法二 //UserTest userTest1 = JSONObject.parseObject(JSONObject.toJSONString(dataMap), UserTest.class); //System.out.println(userTest1.toString()); } public static <T> T convertMapToBean(Class<T> clazz, Map<String, Object> map) { T obj = null; try { //方法一 /*BeanInfo beanInfo = Introspector.getBeanInfo(clazz); obj = clazz.newInstance(); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for(PropertyDescriptor propertyDescriptor : propertyDescriptors){ String propertyName = propertyDescriptor.getName(); if (map.containsKey(propertyName)) { Object value = map.get(propertyName); propertyDescriptor.getWriteMethod().invoke(obj, "".equals(value) ? null : value); } }*/ //方法三 map中的value不能出现null,否则会报错 obj = clazz.newInstance(); BeanMap beanMap = BeanMap.create(obj); beanMap.putAll(map); } catch (Exception e) { e.getMessage(); } return obj; }
注意:
实体类
public class UserTest { private String name; private Integer age; private double salary; public UserTest() { } public UserTest(String name, Integer age, double salary) { this.name = name; this.age = age; this.salary = salary; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", age=" + age + ", salary=" + salary + '}'; } }