一、实体转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 +
                '}';
    }
}