package com.sport.sporttrailwalkadminserver.common.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.sport.sporttrailwalkadminserver.po.trailwalk.TrailActivityApplyExport;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.util.StringUtils;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class ListUtil {
/**
* targetList 需要处理的list
* targetClass 目标class
* @return List 处理好的list
*/
public List listMapParseListObj(List targetList, Class targetClass){
// 先获取该类的代理对象
Object obj = null;
try {
obj = targetClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
// 将list转为list对象
for(int i = 0; i< targetList.size(); i++){
Map map = (Map)targetList.get(i); // 获取每个list里面每个map
Iterator it = map.keySet().iterator();
while(it.hasNext()){
String name = it.next().toString(); // 名称 key
String value = map.get(name).toString(); // 值 value
try{
//取得值的类形
Class type = PropertyUtils.getPropertyType(obj, name);
if(!StringUtils.isEmpty(type)){
PropertyUtils.setProperty(obj, name, ConvertUtils.convert(value, type));
}
}catch(Exception ex){
ex.printStackTrace();
}
}
}
// 将list<Map> 转为对象进行返回
List resListObj = Lists.newArrayList();
for (Object object : targetList) {
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(object));
resListObj.add(jsonObject.toJavaObject((Type)targetClass));
}
//返回封装好的集合
return resListObj;
}
public static void main(String[] args) {
// 获取所有列表信息
List<Map> allListMap = Lists.newArrayList();
for (int i = 0; i < 5; i++) {
Map map = Maps.newHashMap();
map.put("name", "张三"+i);
map.put("birthday", "2015-05-06"+i);
allListMap.add(map);
}
ListUtil listUtil = new ListUtil();
List<TextExport> textExportList = listUtil.listMapParseListObj(allListMap, TextExport.class);
System.out.println(textExportList.toString());
}
}
结果: