Java Map<String, Object> 转 Java实体类
最近遇到一个需要将Map<String, Object>转成java实体类的需求, 所以找了一些资料结合需求完成了.
/**
* Map转成实体对象
*
* @param map map实体对象包含属性
* @param clazz 实体对象类型
* @return 实体类对象
*/
public static <RESULT> RESULT mapToJavaEntity(Map<String, Object> map, Class<RESULT> clazz) {
RESULT obj = null;
try {
if (map == null) {
return clazz.newInstance();
}
clazz.newInstance();
obj = clazz.newInstance();
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
int mod = field.getModifiers();
if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
continue;
}
field.setAccessible(true);
// 我这里map的key有下划线格式的, 所以用了baomidou的stringutils来转义
field.set(obj, map.get(StringUtils.camelToUnderline(field.getName())));
}
} catch (Exception e) {
log.error("map转实体类error, map:{}, entity:{}", map, clazz.getName());
}
return obj;
}