java map 轉 object

private <T> List<T> maplist2objlist(List<Map<String,Object>> list,Class<T> clazz){
  List<T> resultList=new LinkedList<T>();
  try {
   if(list!=null&&list.size()>0){
    BeanInfo beanInfo=Introspector.getBeanInfo(clazz);
    PropertyDescriptor[] propertyDescriptors=beanInfo.getPropertyDescriptors();
    for(Map<String,Object> map:list){
     if(map==null)continue;
     T resultObj=clazz.newInstance();
     for(Entry<String,Object> entry:map.entrySet()){
      for(PropertyDescriptor field:propertyDescriptors){
       if(entry.getKey().toLowerCase().equals(field.getName().toLowerCase())){
        String fieldName=field.getName();
        Method setMethod=field.getWriteMethod();
        if(setMethod!=null){
         if(entry.getValue()!=null&&entry.getValue() instanceof Map){
          @SuppressWarnings("unchecked")
          Map<String,Object> inMap=(Map<String, Object>) entry.getValue();
          BeanUtils.setProperty(resultObj, fieldName, map2obj(inMap,field.getPropertyType()));
         }else{
          BeanUtils.setProperty(resultObj, fieldName, entry.getValue());
         }
        }
        break;
       }
      }
     }
     resultList.add(resultObj);
    }
   }
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  }
  return resultList;
 }ip


 public <T> Object map2obj(Map<String,Object> map,Class<T> clazz){
  T resultObj=null;
  try {
   if(map!=null){
    resultObj=clazz.newInstance();
    BeanInfo beanInfo=Introspector.getBeanInfo(clazz);
    PropertyDescriptor[] propertyDescriptors=beanInfo.getPropertyDescriptors();
    for(Entry<String,Object> entry:map.entrySet()){
     for(PropertyDescriptor field:propertyDescriptors){
      if(entry.getKey().toLowerCase().equals(field.getName().toLowerCase())){
       String fieldName=field.getName();
       Method setMethod=field.getWriteMethod();
       if(setMethod!=null){
        if(entry.getValue()!=null&&entry.getValue() instanceof Map){
         @SuppressWarnings("unchecked")
         Map<String,Object> inMap=((Map<String, Object>) entry.getValue());
         BeanUtils.setProperty(resultObj, fieldName, map2obj(inMap,field.getPropertyType()));
        }else{
         BeanUtils.setProperty(resultObj, fieldName, entry.getValue());
        }
       }
      }
     }
    }
   }
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  }
  return resultObj;
 }get

相關文章
相關標籤/搜索