JavaBean转Map的常用方式

引言

实际操纵过程中经常会出现需要将java对象转换成map,为了避免因为每个对象属性多且不一样的情况,可以通过jdk自带的功能抽象出公用方法。

之前的写法

Map<String,Object> map = new HashMap<>();
map.put("属性1","value1");
map.put("属性2","value2");
map.put("属性3","value3");
...

改进后的写法(方式一)

public static Map<String, Object> beanToMap(Object object) {
     
        Map<String, Object> map = new HashMap<>();
        Field[] fields = object.getClass().getDeclaredFields();
        Stream.of(fields).forEach(field -> {
     
            try {
     
                if (!"serialVersionUID".equals(field.getName())) {
     
                    field.setAccessible(true);
                    map.put(field.getName(), field.get(object));
                }
            } catch (Exception e) {
     
                e.printStackTrace();
            }
        });
        return map;
    }

改进后的写法(方式二)

public static Map<String, Object> beanToMap(Object object) {
     
        Map<String, Object> map = new HashMap<>();
        try {
     
            BeanInfo beanInfo = Introspector.getBeanInfo(object.getClass());
            PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
            Stream.of(descriptors).forEach(descriptor -> {
     
                try {
     
                    if (!"class".equals(descriptor.getName())) {
     
                        Method getter = descriptor.getReadMethod();
                        map.put(descriptor.getName(), getter.invoke(object));
                    }
                } catch (Exception e) {
     
                    e.printStackTrace();
                }
            });
        } catch (Exception e) {
     
            e.printStackTrace();
        }
        return map;
    }

当然还有其他的工具类提供了实用快捷的转换类如
1.Apache提供的org.apache.commons.beanutils.BeanUtils#describe
2.Spring提供的org.springframework.beans.BeanUtils#getPropertyDescriptors
3.Fastjson提供的com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(object))

你可能感兴趣的:(java服务端,java,object)