午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術文章
文章詳情頁

java中實現map與對象相互轉換的幾種實現

瀏覽:20日期:2022-08-29 14:23:46

最近,研究map與java對象之間的相互轉換,總結了5種方法:

第一種:使用org.apache.commons.beanutils轉換

用到的主要jar包:commons-beanutils-1.9.3.jar

//map轉java對象public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) { return null; } Object obj = beanClass.newInstance(); BeanUtils.populate(obj, map); return obj; } //java對象轉mappublic static Map<?, ?> objectToMap(Object obj) { if (obj == null) return null; return new BeanMap(obj); }

在使用該方法進行java對象轉map時,可能會發生以下錯誤:

Exception in thread 'main' java.lang.NoClassDefFoundError: org/apache/commons/collections/Transformer at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$000(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at org.apache.commons.beanutils.BeanMap.createTypeTransformers(BeanMap.java:132) at org.apache.commons.beanutils.BeanMap.<clinit>(BeanMap.java:68) at com.example2.pojo.PojoToMap.objectToMap(PojoToMap.java:23) at com.example2.pojo.PojoToMap.main(PojoToMap.java:16)Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 16 more

解決方法見本人的另一篇文章:https://www.jb51.net/article/190471.htm

第二種:使用Introspector轉換

//map轉java對象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; } //java對象轉mappublic 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;}

第三種:使用reflect轉換

//map轉java對象public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { if (map == null) { return null; } Object object = beanClass.newInstance(); Field[] fields = beanClass.getDeclaredFields(); for (Field field : fields) { int mod = field.getModifiers(); if (Modifier.isFinal(mod) || Modifier.isStatic(mod)) {continue; } field.setAccessible(true); field.set(object, map.get(field.getName())); } return object; } //java對象轉mappublic static Map<String, Object> objectToMap(Object obj) throws Exception { if (obj == null) { return null; } Map<String, Object> map = new HashMap<String, Object>(); Field[] declaredFields = obj.getClass().getDeclaredFields(); for (Field field : declaredFields) { field.setAccessible(true); map.put(field.getName(), field.get(obj)); } return map;}

第四種:使用net.sf.cglib.beans.BeanMap轉換

用到的主要jar包:cglib-2.2.2.jar

//map轉java對象public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { Object object = beanClass.newInstance(); BeanMap beanMap = BeanMap.create(object); beanMap.putAll(map); return object;} //java對象轉mappublic static Map<String, Object> objectToMap(Object obj) { Map<String, Object> map = Maps.newHashMap(); if (obj != null) { BeanMap beanMap = BeanMap.create(obj); for (Object key : beanMap.keySet()) { map.put(key + '', beanMap.get(key)); } } return map;}

在使用本方法進行map轉java對象時,可能會發生以下錯誤:

Exception in thread 'main' java.lang.NoClassDefFoundError: org/objectweb/asm/Type at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:184) at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:66) at net.sf.cglib.beans.BeanMap$Generator.<clinit>(BeanMap.java:64) at net.sf.cglib.beans.BeanMap.create(BeanMap.java:56) at com.example2.pojo.MapToPojo.mapToBean(MapToPojo.java:27) at com.example2.pojo.MapToPojo.main(MapToPojo.java:18)Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ... 6 more

解決方法見本人的另一篇文章:https://www.jb51.net/article/190474.htm

第五種:使用json轉換

用到的主要jar包:fastjson-1.2.54.jar

//map轉java對象public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception { String jsonStr = JSONObject.toJSONString(map); return JSONObject.parseObject(jsonStr, beanClass);} //java對象轉mappublic static Map<String, Object> objectToMap(Object obj) { String jsonStr = JSONObject.toJSONString(obj); return JSONObject.parseObject(jsonStr);}

以上方法本人均實際測試通過。到此這篇關于java中實現map與對象相互轉換的幾種實現的文章就介紹到這了,更多相關java map與對象相互轉換內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 久久久久久一级片 | aaa亚洲| a级片毛片 | 少妇喷水在线观看 | 天天人人 | 亚洲欧洲免费视频 | 黄色剧场| 国产在视频线精品视频 | 亚洲精品三区 | 国产三区av | 亚洲高清在线观看视频 | 中文字幕免费高 | 中日韩精品视频 | 亚洲裸体视频 | 尤物国产在线 | 91啪国产 | 97操操| 四虎国产成人精品免费一女五男 | 可以免费看的av | 欧美在线免费播放 | 日本大尺度吃奶做爰久久久绯色 | 亚洲精品一区在线 | 亚洲视频播放 | 成人视屏在线 | 亚洲天天操 | 性视频在线播放 | 亚洲欧美日韩色 | 色婷婷在线播放 | 欧美一级淫片bbb一84 | 日本在线视频一区二区 | 超碰在线中文 | 自拍偷拍在线播放 | 五月天天色| 色综合99 | 国产精品久久9 | 欧美激情国产精品 | 国产精品福利在线 | 亚洲男人皇宫 | 特级a毛片 | 婷婷国产 | 手机在线毛片 |