目录
1. 方法一:通过反射的方式实现
比如想将UserDoc对象的属性赋值给map的key,对应的属性值赋值给map的value
Map<String,Object> map = new HashMap<>();
Field[] fields = UserDoc.class.getDeclaredFields();
// 遍历字段并添加到map中
for(Field field : fields){
try {
field.setAccessible(true);
map.put(field.getName(),field.get(userDoc));
}catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
2. 方法二:借用hutool工具
借用hutool工具需要在pom.xml中引入对应的依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.11</version>
</dependency>
然后使用BeanUtil.beanToMap的方法一步,到位:
Map<String,Object> map = BeanUtil.beanToMap(userDoc);
当然使用BeanUtil.beanToMap方法,还可以将对应属性字段名称转换为驼峰命名法
Map<String,Object> map = BeanUtil.beanToMap(userDoc,new HashMap<>(),true,false);
说明:
- userDoc: 需要转换的Bean对象实例。在这个例子中,userDoc是一个包含用户信息的Java对象
- new HashMap<>(): 要填充的Map实例。这里创建了一个新的HashMap实例,beanToMap方法将把Bean的属性填充到这个Map中
- true: 指的是是否将属性名转换为下划线命名法。如果设置为 true,则 Java Bean 的驼峰命名属性(例如 userName)会被转换为下划线命名法(例如 user_name)的键。如果设置为 false,则属性名将保持原样,不会进行转换。
- false: 这个布尔参数表示是否忽略值为null的字段。如果设置为true,则所有值为null的字段都不会被包含在结果Map中。在这个例子中,它被设置为false,意味着即使字段的值为null,也会被包含在Map中