java map 转 object
博客专区 > Sobey 的博客 > 博客详情
java map 转 object
Sobey 发表于1年前
java map 转 object
  • 发表于 1年前
  • 阅读 31
  • 收藏 2
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

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;
 }


 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;
 }

标签: java map
共有 人打赏支持
粉丝 5
博文 40
码字总数 15844
×
Sobey
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: