map转成对象
程序员文章站
2022-06-15 09:50:22
...
map集合转对象
经常遇到map集合转化成对象的问题,于是利用反射写了这个。
建一个实体类
import lombok.Data;
import java.util.Date;
@Data
public class Userinfos {
private int userid;
private String username;
}
工具类
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Map;
import java.util.Objects;
/**
* map集合转对象工具
*
*/
public class MapToObj {
/**
* @param map
* @param clazz
* @return
*/
public static Object mapToObject(Map<String, Object> map, Class<?> clazz) {
if (map == null) {
return null;
}
Object ob = null;
try {
ob = clazz.newInstance();
Field[] fis = ob.getClass().getDeclaredFields();
for (Field fi : fis) {
int mod = fi.getModifiers();
if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
continue;
}
fi.setAccessible(true);
if (Objects.equals("entranceId", fi.getName())) {
String str = String.valueOf(map.get(fi.getName()));
fi.set(ob, Long.parseLong(str));
} else {
fi.set(ob, map.get(fi.getName()));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return ob;
}
}
测试
public static void main(String[] args)
Map<String, Object> map = new HashMap<>();
map.put("userid", 1);
map.put("username", "xiaohong");
Userinfos o = (Userinfos) MapToObj.mapToObject(map, Userinfos.class);
System.out.println("o = " + o);
}
结果
o = Userinfos(userid=1, username=xiaohong)
由此可见,直接转化成对象。
下一篇: Map转成JSON对象