java map转对象 泛型_List<Map<String, Object>>转换为泛型List<T>对象

List>转List

传入需要转换的clazz

Map的值Object转换为T的Field对应类型

/**

* List> 到 List 数据转换

*/

public static List setList(List> srcList, Class clazz) {

List list = new ArrayList<>();

srcList.forEach(x -> {

try {

T t = clazz.newInstance();

Field[] fields = t.getClass().getDeclaredFields();

for (Field field : fields) {

if (!"serialVersionUID".equals(field.getName())) {

//设置对象的访问权限,保证对private的属性的访问

field.setAccessible(true);

//读取配置转换字段名,并从map中取出数据

Object v = x.get(field.getName());

field.set(t, convert(v, field.getType()));

}

}

list.add(t);

} catch (Exception ex) {

log.error(ex.toString());

}

});

return list;

}

/**

* Field类型转换

*/

private static T convert(Object obj, Class type) {

if (obj != null && StrUtil.isNotBlank(obj.toString())) {

if (type.equals(String.class)) {

return (T) obj.toString();

} else if (type.equals(BigDecimal.class)) {

return (T) new BigDecimal(obj.toString());

}

//其他类型转换......

}

return null;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值