java对象与map对象相互转换

  1 /**
  2  * 使用org.apache.commons.beanutils进行转换
  3  */
  4 class A {
  5
  6     public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
  7         if (map == null)
  8             return null;
  9
 10         Object obj = beanClass.newInstance();
 11
 12         org.apache.commons.beanutils.BeanUtils.populate(obj, map);
 13
 14         return obj;
 15     }
 16
 17     public static Map<?, ?> objectToMap(Object obj) {
 18         if(obj == null)
 19             return null;
 20
 21         return new org.apache.commons.beanutils.BeanMap(obj);
 22     }
 23
 24 }
 25
 26 /**
 27  * 使用Introspector进行转换
 28  */
 29 class B {
 30
 31     public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
 32         if (map == null)
 33             return null;
 34
 35         Object obj = beanClass.newInstance();
 36
 37         BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
 38         PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
 39         for (PropertyDescriptor property : propertyDescriptors) {
 40             Method setter = property.getWriteMethod();
 41             if (setter != null) {
 42                 setter.invoke(obj, map.get(property.getName()));
 43             }
 44         }
 45
 46         return obj;
 47     }
 48
 49     public static Map<String, Object> objectToMap(Object obj) throws Exception {
 50         if(obj == null)
 51             return null;
 52
 53         Map<String, Object> map = new HashMap<String, Object>();
 54
 55         BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
 56         PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
 57         for (PropertyDescriptor property : propertyDescriptors) {
 58             String key = property.getName();
 59             if (key.compareToIgnoreCase("class") == 0) {
 60                 continue;
 61             }
 62             Method getter = property.getReadMethod();
 63             Object value = getter!=null ? getter.invoke(obj) : null;
 64             map.put(key, value);
 65         }
 66
 67         return map;
 68     }
 69
 70 }
 71
 72 /**
 73  * 使用reflect进行转换
 74  */
 75 class C {
 76
 77     public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
 78         if (map == null)
 79             return null;
 80
 81         Object obj = beanClass.newInstance();
 82
 83         Field[] fields = obj.getClass().getDeclaredFields();
 84         for (Field field : fields) {
 85             int mod = field.getModifiers();
 86             if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
 87                 continue;
 88             }
 89
 90             field.setAccessible(true);
 91             field.set(obj, map.get(field.getName()));
 92         }
 93
 94         return obj;
 95     }
 96
 97     public static Map<String, Object> objectToMap(Object obj) throws Exception {
 98         if(obj == null){
 99             return null;
100         }
101
102         Map<String, Object> map = new HashMap<String, Object>();
103
104         Field[] declaredFields = obj.getClass().getDeclaredFields();
105         for (Field field : declaredFields) {
106             field.setAccessible(true);
107             map.put(field.getName(), field.get(obj));
108         }
109
110         return map;
111     }
112 }  
时间: 2024-11-05 19:36:28

java对象与map对象相互转换的相关文章

转换复杂的JSON对象为 Map对象

最近项目需要跟客户对接一个webservice接口,客户那传json串过来,属于比较复杂的json串,这里跟大家分享下我项目中所用的解析方法: 该方法需要以下jar package com.test; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import net.sf.json.JSON

Java中遍历Map对象

下面列出一些最常用的Java遍历Map对象的方法 1.在for-each中使用entrySet遍历 这是最常用的遍历方式.在键值都需要时使用. Map<String,String> map = new HashMap<String,String>(); for(Map.Entry<String, String> entry : map.entrySet()){ System.out.println(entry.getKey()+" : "+entry

Java中遍历Map对象的4种方法

在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. [java] view

Java中遍历Map对象的方法

方法一: 在for-each循环中使用entries来遍历 这是最常见的遍历方式,在需要获取key和value时使用. Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (Map.Entry<Integer, Integer> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() +

在js中实现java中的Map对象

1 <html> 2 <head> 3 <title>Test Map</title> 4 <script type="text/javascript"> 5 <!-- 6 7 /** 8 * Simple Map 9 * 10 * 11 * var m = new Map(); 12 * m.put('key','value'); 13 * ... 14 * var s = ""; 15 * m.e

JavaBean对象与Map对象互相转化

/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) return null; Object obj = beanClass.newInstance(); org.apache.commons.beanu

使用jackson对Java对象与JSON字符串相互转换的一些总结

本文为菠萝大象原创,如要转载请注明出处.http://www.blogjava.net/bolo 代码无真相,为了最简单的说明,我直接上代码. public class User { private String name; private Gender gender; private List<Account> accounts; 省略get和set方法 ... } public enum Gender { MALE, FEMALE } public class Account { priv

转!! Java中如何遍历Map对象的4种方法

在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式.在键值都需要时使用. [java] view

Bean-Query 一个把对象转换为Map的Java工具库

刚开源了一个经过完整测试的Java工具类.目前的代码已经经历了完整的测试,正在申请放到Maven central Repository上. 地址如下: https://github.com/Jimmy-Shi/bean-query 使用说明如下: Bean-query Click Here for English version. BeanQuery 是一个把对象转换为Map的Java工具库.支持选择Bean中的一些属性,对结果进行排序和按照条件查询.不仅仅可以作用于顶层对象,也可以作用于子对象