javaBean转换为map
import net.sf.cglib.beans.BeanMap;
Map beanMap = net.sf.cglib.beans.BeanMap.create(Object bean);//bean转map
//或者
import org.apache.commons.beanutils.BeanUtils;
Map describe = BeanUtils.describe(Object bean);//注意:该方法的map的value会转为String,同时多出"class"的key
map转换为javaBean
import org.apache.commons.beanutils.BeanUtils;
BeanUtils.populate(Object bean,Map map);//map转bean
javaBean转换为map(其他方法)
import java.lang.reflect.Field;
public static Map<String, Object> objectToMap(Object obj) throws Exception {
Map<String, Object> map = new HashMap<>();
java.lang.reflect.Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}
return map;
}
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public static Map<String, Object> bean2Map(Object bean) throws Exception {
Map map = new HashMap<String, Object>();
BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass(), Object.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pds) {
String name = pd.getName();
Method md = pd.getReadMethod();
map.put(name, md.invoke(bean));
}
return map;
}
import org.apache.commons.beanutils.PropertyUtilsBean;
import java.beans.PropertyDescriptor;
public static Map<String, Object> beanToMap(Object obj) {
Map<String, Object> params = new HashMap<>();
try {
PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();
PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj);
for (PropertyDescriptor descriptor : descriptors) {
String name = descriptor.getName();
if (!"class".equals(name)) {
params.put(name, propertyUtilsBean.getNestedProperty(obj, name));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return params;
}
map转换为javaBean(其他方法)
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public static <T> T map2bean(Map<String, Object> map, Class<T> clz) throws Exception {
//创建JavaBean对象
T obj = clz.newInstance();
//获取指定类的BeanInfo对象
BeanInfo beanInfo = Introspector.getBeanInfo(clz, Object.class);
//获取所有的属性描述器
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pds) {
Object value = map.get(pd.getName());
Method setter = pd.getWriteMethod();
setter.invoke(obj, value);
}
return obj;
}
获取map中的首个key与value
Object value = map.entrySet().stream().findFirst().get().getValue();