java Map与Object互转

    /***
     * map转换成对象
     */
    public static Object mapToObject(Map<String, Object> map, Class<?> beanClass)
            throws Exception {
        if (map == null)
            return null;

        Object obj = beanClass.newInstance();

        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
        PropertyDescriptor[] propertyDescriptors = beanInfo
                .getPropertyDescriptors();
        for (PropertyDescriptor property : propertyDescriptors) {
            Method setter = property.getWriteMethod();
            if (setter != null) {
                setter.invoke(obj, map.get(property.getName()));
            }
        }

        return obj;
    }
    /***
     * mapList转换成对象List
     */
    public static List<Object> mapListToObjectList(
            List<Map<String, Object>> mapList, Class<?> beanClass)
            throws Exception {
        if (mapList == null)
            return null;

        List<Object> objList = new ArrayList<Object>();
        for (Map<String, Object> map : mapList) {
            Object obj = beanClass.newInstance();
            BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
            PropertyDescriptor[] propertyDescriptors = beanInfo
                    .getPropertyDescriptors();
            for (PropertyDescriptor property : propertyDescriptors) {
                Method setter = property.getWriteMethod();
                if (setter != null) {
                    setter.invoke(obj, map.get(property.getName()));
                }
            }
            objList.add(obj);
        }

        return objList;
    }
    /***
     *对象 转换成 map
     */
    public static Map<String, Object> objectToMap(Object obj) throws Exception {
        if (obj == null)
            return null;

        Map<String, Object> map = new HashMap<String, Object>();

        BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
        PropertyDescriptor[] propertyDescriptors = beanInfo
                .getPropertyDescriptors();
        for (PropertyDescriptor property : propertyDescriptors) {
            String key = property.getName();
            if (key.compareToIgnoreCase("class") == 0) {
                continue;
            }
            Method getter = property.getReadMethod();
            Object value = getter != null ? getter.invoke(obj) : null;
            map.put(key, value);
        }

        return map;
    }
    实体类: 
public class Users { 
     private String name; 
     private String age; 

     public String getName() { 
     return name; 
     } 
     public void setName(String name) { 
     this.name = name; 
     } 
     public String getAge() { 
     return age; 
     } 
     public void setAge(String age) { 
     this.age = age; 
     }   
} 

测试类: 
public class test { 
     public static void main(String[] args) { 
         Map&lt;String,Object&gt; map = new HashMap&lt;String,Object&gt;(); 
         map.put(&quot;name&quot;, &quot;www.ixiaocao.cn&quot;); 
         map.put(&quot;age&quot;, &quot;21&quot;); 
         Transformation t = new Transformation(); 
         try { 
             Users u = (Users) t.mapToObject(map, Users.class); 
             System.out.println(u.getName()); 
             System.out.println(u.getAge()); 
         } catch (Exception e) { 
             e.printStackTrace(); 
         } 
     } 
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值