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