将JavaBean转换成Map有许多方式,可使用各种JSON框架进行转换,也可用反射方式转换或者使用apache commons包中的BeanUtils.describe(item)方法进行转换,不过此方法会将JavaBean中所有字段的类型都转换为String。
接下来介绍利用JDK 8的新特性及Spring框架的方法(BeanUtils.getPropertyDescriptors()和ReflectionUtils.invokeMethod())进行转换,代码如下:
Arrays.stream(BeanUtils.getPropertyDescriptors(obj.getClass()))
.filter(itm -> !"class".equals(itm.getName()))
.collect(HashMap::new,
(map, pd) -> map.put(pd.getName(), ReflectionUtils.invokeMethod(pd.getReadMethod(), obj)),
HashMap::putAll);