java-List>转换成List>实体类的集合


注:List<Map<String,String>> map 的泛型可以换别的类型,在以此改代码而已。

  1   class Javabean1{
  2         private String data1;
  3         private String data2;
  4         private String data3;
  5         //...
  6     }
  7     class Javabean2{
  8         private String data1;
  9         private String data2;
 10         private String data3;
 11         //...
 12     }
 13     
 14     class classAll{
 15         private Javabean1 bean1;
 16         private List<Javabean2> listbean2;
 17         //...
 18     }
 19     
 20     /**
 21      * Map集合对象转化成 JavaBean集合对象
 22      * classAll有两个属性:1 Javabean1实体类,2 List<Javabean2> 实体类的集合
 23      * @param javaBean
 24      *            JavaBean实例对象
 25      * @param mapList
 26      *            Map数据集对象
 27      * @return
 28      *
 29      */
 30     public static List<classAll> listmapUS(Javabean1 javaBean,
 31             List<Map<String, String>> mapList) {
 32         if (mapList == null || mapList.isEmpty()) {
 33             return null;
 34         }
 35         List<classAll>  objectList = new ArrayList<classAll>();
 36         Javabean1 object = null;
 37         for (Map map : mapList) {
 38             classAll infoCargo=new classAll();
 39             if (map != null) {
 40                 object = mapBeanUS(javaBean, map);
 41                 infoCargo.SetJavabean1(object);
 42                 if(map.containsKey("omsPickupCargo")){
 43                     //这个map的key值是json的字符串,需要改,不要的话删掉就好
 44                     infoCargo.setJavabean2(JSONArray.toList(JSONArray.fromObject(map.get("omsPickupCargo")), new OmsPickupCargo(), new JsonConfig()));    
 45                 }
 46                 objectList.add(infoCargo);
 47             }
 48         }
 49         return objectList;
 50     }
 51     /**
 52      * Map对象转化成 JavaBean对象
 53      * 
 54      * @param javaBean
 55      *            JavaBean实例对象
 56      * @param map
 57      *            Map对象
 58      * @return
 59      * 
 60      */
 61     public static Javabean1 mapBeanUS(Javabean1 javaBean, Map<String, String> map) {
 62         try {
 63             // 获取javaBean属性
 64             BeanInfo beanInfo = Introspector.getBeanInfo(javaBean.getClass());
 65             // 创建 JavaBean 对象
 66             Javabean1 obj = (Javabean1) javaBean.getClass().newInstance();
 67             PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
 68             if (propertyDescriptors != null && propertyDescriptors.length > 0) {
 69                 String propertyName = null; // javaBean属性名
 70                 Object propertyType = null;
 71                 for (PropertyDescriptor pd : propertyDescriptors) {
 72                     propertyName = pd.getName();
 73                     propertyType = pd.getPropertyType();
 74                     if (map.containsKey(propertyName)) {
 75                         if(StringUtils.isEmpty(map.get(propertyName))){
 76                             continue;
 77                         }
 78                         pd.getWriteMethod().invoke(obj, new Object[] { endWitch(propertyType, map.get(propertyName)) });
 79                     }
 80                 }
 81                 return obj;
 82             }
 83         } catch (Exception e) {
 84             e.printStackTrace();
 85         }
 86         return null;
 87     }
 88     /**
 89      * 按实体类属性数据类型把String类型转换对应的类型
 90      * @param object object属性类型
 91      * @param value value要转换的值
 92      * @return
 93      * 
 94      */
 95     public static Object endWitch(Object object, String value) {
 96         if ("".equals(object.toString())|| null == object.toString()) {            
 97             return null;
 98         }
 99         if ("".equals(value)  || null == value) {        
100             return null;
101         }
102         if (object.toString().endsWith("Long")) {
103             return Long.parseLong(value);
104         }
105         if (object.toString().endsWith("Integer")) {
106             return Integer.parseInt(value);
107         }
108         if (object.toString().endsWith("Double")) {
109             return Double.parseDouble(value);
110         }
111         if (object.toString().endsWith("Float")) {
112             return Float.parseFloat(value);
113         }
114         if (object.toString().endsWith("Date")) {
115             //vaue为毫秒数需要转date格式,可以根据你的需要修改
116             SimpleDateFormat format = new SimpleDateFormat();
117             String d = format.format(Long.parseLong(value));
118             try {
119                 Date date = format.parse(d);
120                 return date;
121             } catch (ParseException e) {
122                 e.printStackTrace();
123             }
124         }
125         return value;
126     }

注:关键代码由网友提供,找不到他的网页地址了,所以在次感谢他!!!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。