转换流程如下:
一、需要一个MapToObject工具类
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Date;
import java.util.Map;
/**
* @author: Combo
* @time: 2020/5/22 18:40
* @description: 转换类
*/
public class MapToObject {
public static <T> T map2Object(Map<String, Object> map, Class<T> clazz) {
if (map == null) {
return null;
}
T obj = null;
try {
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);
String filedTypeName = field.getType().getName();
if (filedTypeName.equalsIgnoreCase("java.util.date")) {
String datetimestamp = String.valueOf(map.get(field.getName()));
if (datetimestamp.equalsIgnoreCase("null")) {
field.set(obj, null);
} else {
field.set(obj, new Date(Long.parseLong(datetimestamp)));
}
} else {
field.set(obj, map.get(field.getName()));
}
}
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
}
二、使用流特性将List<Map>转成List<Bean>
// 实体类
User user = new User();
// 得到的list<map>的值
List<Map> mapList = new ArrayList<>();
// 利用流 将List<map> 转成 List<实体类>
List<User> userList = mapList.stream().map(item -> MapToObject.map2Object(item, User.class)).collect(Collectors.toList());
网友评论