注: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 }
注:关键代码由网友提供,找不到他的网页地址了,所以在次感谢他!!!