文档章节

java map 转 object

Sobey
 Sobey
发布于 2016/07/15 17:03
字数 201
阅读 41
收藏 2

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

© 著作权归作者所有

共有 人打赏支持
Sobey
粉丝 4
博文 43
码字总数 16279
作品 0
黄浦
高级程序员
Java序列化与JSON序列化大比拼

一、背景 有项目需要传输Map结构的数据,有人倾向用Java序列化来做,有人倾向用JSON的序列化来做。所以我们还是比比吧。 Java观点:Object2Object,使用时简单快速。 JSON观点:JSON格式与语...

NoahX
2013/03/10
0
20
[转]理解ThreadLocal

ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 Th...

inferrrrrr
2009/11/03
0
0
一,setCycleDetectionStrategy 防止自包含 Java代码 收藏代码

一,setCycleDetectionStrategy 防止自包含 Java代码 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void testCycleObject() { CycleObject object = new......

itwriter
2014/03/19
0
0
转:理解ThreadLocal

ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 Th...

轮回今生
2012/10/26
0
0
服务器端-前端json数据传输小结

http://pan.baidu.com/s/1ntKhtMh http://pan.baidu.com/s/1kTrLiPT Java服务端收到前端字符串转json: import com.alibaba.fastjson.JSONObject;import com.alibaba.fastjson.JSON; String ......

阿宇_
2015/08/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring加载properties文件的两种方式

在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修...

架构师springboot
19分钟前
0
0
分布式事务,原来可以这么玩?

多个数据要同时操作,如何保证数据的完整性,以及一致性? 答 : 事务 ,是常见的做法。 举个栗子: 用户下了一个订单,需要修改 余额表 , 订单 表 , 流水 表 ,于是会有类似的伪代码: st...

微笑向暖wx
22分钟前
2
0
IE6兼容PNG32图片显示PNG8图片

IE6并不是不支持PNG图片,只是不支持半透明通道。 是支持PNG8色表引索全透明的。 以往都是通过滤镜或统统使用PNG8实现兼容。 但是我发现twitter的png图标可以在chrome中显示png32,在IE6显示...

linsk1998
34分钟前
0
0
linux运维需要掌握的基础知识

踏入linux运维工程师这一职业,其实有很多工具技能需要掌握,下面我来给大家一一介绍。 1、shell脚本和另一个脚本语言,shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些...

linuxprobe16
35分钟前
0
0
《netty入门与实战》笔记-03:数据传输载体 ByteBuf 介绍

ByteBuf结构 首先,我们先来了解一下 ByteBuf 的结构 以上就是一个 ByteBuf 的结构图,从上面这幅图可以看到: ByteBuf 是一个字节容器,容器里面的的数据分为三个部分,第一个部分是已经丢弃...

Funcy1122
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部