Map集合转对象Object
1.创建Map集合转Object工具类
/**
* Map集合转Object<T>
* @author shx
* @create 2019/10/10
* @since 1.0.0
*/
public class MapToObjectUtils {
public static Object mapToObject(Map<String, Object> map, Class<?> clazz) {
Object obj = null;
try {
if(map != null){
obj = clazz.newInstance();
// 通过反射获取自定义类的全部字段
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
// 获取字段修饰符 需要排除静态及final修饰的字段
int mod = field.getModifiers();
if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
continue;
}
// 强制设置为 true 即可以对字段值进行设置 防止一些方法阻碍我们对属性进行赋值
field.setAccessible(true);
// map 中如果包含字段名称的 key 则将对应的值放入 clazz 对象对应的字段上
if (map.containsKey(field.getName())){
field.set(obj, map.get(field.getName()));
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
2.创建实体类对象
public class Card {
private String code;
private String name;
private String note;
public String getCode() {
return code;
}
public String getName() {
return name;
}
public String getNote() {
return note;
}
public void setCode(String code) {
this.code = code;
}
public void setName(String name) {
this.name = name;
}
public void setNote(String note) {
this.note = note;
}
@Override
public String toString() {
return "Card [code=" + code + ", name=" + name + ", note=" + note + "]";
}
}
3.测试
/**
*测试
* @param args
*/
public static void main(String[] args) {
Map<String,Object> map = new HashMap<String,Object>();
map.put("code", "001");
map.put("name", "庆余年");
map.put("note", "庆帝");
Card card = (Card) mapToObject(map,Card.class);
System.out.println(card.toString());
}
4.测试结果
Card [code=001, name=庆余年, note=庆帝]