Map與JavaBean實體類之間的相互轉化
package com.newcapec.util.map; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; importorg.apache.commons.beanutils.PropertyUtilsBean; import com.newcapec.cloudpay.dao.po.HostUserInfo; import com.newcapec.cloudpay.dao.po.WXUserInfo; /** * @Title: Java 中 Map與JavaBean實體類之間的相互轉化 * @ClassName:MapBeanTransUtils.java * @Description: * * @Copyright 2016-2017 - Powered By 研發中心 * @author: FLY* @date:2016年12月23日 上午10:11:49 * @version V1.0 */ public class MapBeanTransUtils { /** * 將一個 JavaBean 物件轉化為一個 Map * * @param bean * 要轉化的JavaBean 物件 * @return 轉化出來的 Map 物件 * @throws IntrospectionException * 如果分析類屬性失敗 * @throws IllegalAccessException *如果例項化 JavaBean 失敗 * @throws InvocationTargetException * 如果呼叫屬性的 setter 方法失敗 */ @SuppressWarnings({ "rawtypes", "unchecked" }) public static Map bean2Map(Object bean) throws IntrospectionException, IllegalAccessException, InvocationTargetException { Class type = bean.getClass(); Map returnMap = new HashMap(); BeanInfo beanInfo = Introspector.getBeanInfo(type); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i < propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (!propertyName.equals("class")) { Method readMethod = descriptor.getReadMethod(); Object result = readMethod.invoke(bean, new Object[0]); if (result != null) { returnMap.put(propertyName, result); } else { returnMap.put(propertyName, ""); } } } return returnMap; } /** * 將一個 Map 物件轉化為一個 JavaBean * * @param type * 要轉化的型別 * @param map * 包含屬性值的 map * @return 轉化出來的 JavaBean 物件 * @throws IntrospectionException * 如果分析類屬性失敗 * @throws IllegalAccessException * 如果例項化 JavaBean 失敗 * @throws InstantiationException * 如果例項化 JavaBean 失敗 * @throws InvocationTargetException * 如果呼叫屬性的 setter 方法失敗 */ @SuppressWarnings("rawtypes") public static Object map2Bean(Class type, Map map) throws IntrospectionException, IllegalAccessException, InstantiationException, InvocationTargetException { BeanInfo beanInfo = Introspector.getBeanInfo(type); // 獲取類屬性 Object obj = type.newInstance(); // 建立 JavaBean 物件 // 給 JavaBean 物件的屬性賦值 PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (int i = 0; i < propertyDescriptors.length; i++) { PropertyDescriptor descriptor = propertyDescriptors[i]; String propertyName = descriptor.getName(); if (map.containsKey(propertyName)) { // 下面一句可以 try 起來,這樣當一個屬性賦值失敗的時候就不會影響其他屬性賦值。 Object value = map.get(propertyName); Object[] args = new Object[1]; args[0] = value; descriptor.getWriteMethod().invoke(obj, args); } } return obj; } // 將JAVABEAN實體類轉為map型別,然後返回一個map型別的值 public static Map<String, Object> beanToMap(Object obj) { Map<String, Object> params = new HashMap<String, Object>(0); try { PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean(); PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj); for (int i = 0; i < descriptors.length; i++) { String name = descriptors[i].getName(); if (!"class".equals(name)) { params.put(name, propertyUtilsBean.getNestedProperty(obj, name)); } } } catch (Exception e) { e.printStackTrace(); } return params; } public static void main(String[] args) throws IllegalAccessException, InstantiationException, InvocationTargetException, IntrospectionException { // 獲取分隔符 // System.out.println(System.getProperty("path.separator")); // java物件拷貝之BeanUtils.copyProperties() 用法 WXUserInfo wxUserInfo = new WXUserInfo(); HostUserInfo hostUserInfo = new HostUserInfo(); wxUserInfo.setCustomerCode("11"); wxUserInfo.setCustomerId("id"); wxUserInfo.setCustomerName("name"); wxUserInfo.setName("aa"); wxUserInfo.setStuNo("001"); wxUserInfo.setUserId("uset"); // BeanUtils.copyProperties(wxUserInfo, hostUserInfo); // System.out.println(hostUserInfo); // Map<String, String> hashMap = new HashMap<String, String>(); Map convertBean = MapBeanTransUtils.bean2Map(wxUserInfo); Map<String, Object> beanToMap = MapBeanTransUtils.beanToMap(wxUserInfo); // MapBeanTransUtils.beanToMap(obj) System.out.println(beanToMap); // map 遍歷 for (Map.Entry<String, Object> entry : beanToMap.entrySet()) { System.out.println("屬性名稱:"+entry.getKey()+"------"+"值:"+entry.getValue()); } } }
相關推薦
Map與JavaBean實體類之間的相互轉化
package com.newcapec.util.map; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; imp
datatable與實體類之間相互轉化的幾種方法
#region DataTable轉換成實體類 /// <summary> /// 填充物件列表:用DataSet的第一個表填充實體類 /// </summary> /// <
Java 中 Map與JavaBean之間的相互轉化
在做匯入的時候,遇到了需要將map物件轉化 成javabean的問題,也就是說,不清楚javabean的內部欄位排列,只知道map的 key代表javabean的欄位名,value代表值。 那現在就需要用轉化工具了。是通用的哦! 首先來看 JavaBean 轉化成Ma
Map與JavaBean之間的相互轉化
在做匯入的時候,遇到了需要將map物件轉化 成javabean的問題,也就是說,不清楚javabean的內部欄位排列,只知道map的 key代表javabean的欄位名,value代表值。 那現在就需要用轉化工具了。是通用的哦! 首先來看 JavaBean 轉化成Ma
Android JSON資料與實體類之間的相互轉化-------GSON的用法
這篇文章就是示範如何用GSON把JSON資料與實體類進行相互轉化,需要用到gson-2.3.1.jar這個包。直接貼程式碼了: import java.lang.reflect.Type; import java.util.ArrayList; imp
Java Bean與Map之間相互轉化的實現
涵蓋 ffffff ger 動態性 ring eth 名稱 分享圖片 tro 目錄樹概述Apache BeanUtils將Bean轉MapApache BeanUtils將Map轉Bean理解BeanUtils將Bean轉Map的實現之手寫Bean轉Map 概述 Apac
使用Mapstruct來進行domain實體與Entity模型之間的對映操作,減少類之間程式碼轉化
轉載地址:http://blog.csdn.net/lu_ckid/article/details/54602057 在一個成熟可維護的工程中,細分模組後,domian工程最好不要被其他工程依賴,但是實體類一般存於domain之中,這樣其他工程想獲取實體類資
json:實體類和JSON物件之間相互轉化
在需要用到JSON物件封裝資料的時候,往往會寫很多程式碼,也有很多複製貼上,為了用POJO的思想我們可以裝JSON轉化為實體物件進行操作 1. [程式碼]工具類 packagemyUtil; importjava.io.IOException; impor
String型別 與Integer 型別之間相互轉化
String 轉成 Integer 》》當我們要把String轉化為Integer時,一定要對String進行非空判斷,否則很可能報空指標異常。
android中px,sp,dp之間相互轉化的工具類
在平時開發中,難免遇到需要在程式碼裡對尺寸進行轉化的問題,在這裡總結一下,方便以後呼叫 public class DensityUtil { /** * dp轉換成px */ private int dp2px(Context context,float dp
映射篇:request-String-Object-Map之間相互轉化(程序員的成長之路---第5篇)
exception types common validate runt eight methods 數據庫 英文 為什麽寫這一篇 問題一:jdbc連接數據庫返回的對象是ResultSet,如何把ResultSet對象中的值轉換為我們自建的各種實體類? 我估計,80%的程序
java JavaBean(實體類)轉化為map (利用Java反射實現)
/** * 獲取利用反射獲取類裡面的值和名稱轉化為map * * @param obj //JavaBean * @return map * @throws IllegalAccessException
javabean實體類物件轉為Map型別物件的方法
javabean(實體類)轉Map型別/*下面是從poi匯出EXCEL的一部分程式碼,主要將傳引數的list轉換為map型別,list裝載的資料是從資料庫取出來的,可以是陣列型別,也可以是map型別,也可以是實體類*/ public static TableData cr
FastJson中JsonArray、JsonObject、json格式字串、javabean之間相互轉化
package com.kenny; import java.awt.print.Book; import java.util.ArrayList; import java.util.List; import com.alibaba.fastjson.JSON; imp
Map與JavaBean之間的轉換
/** * 將一個 JavaBean 物件轉化為一個 Map * * @param bean 要轉化的JavaBean 物件 * @return 轉化出來的 Map 物件 * @throws IntrospectionException 如果分析類屬性失
linux中常用時間和字符串之間相互轉化
時間函數 spa lin cell form time函數 地理 -1 名稱 在Linux中經常會遇到時間和字符串相互轉化的情形,有兩個函數專門對應相應的轉化。 1、時間轉字符串函數strftime 函數原型:size_t strftime(char *s,size_t m
NSString - - 常用結構體與字符串之間的轉化(打印時可用)
code cgrect net 字符 cgpoint mst cnblogs cgp affine CGRect、CGSize、UIEdgeInsets、UIOffset、CGPoint、NSRange等 UIGeometry.h 1 NSString *NSStr
Javascript學習筆記-數據類型相互轉化
數據類型轉化註意事項 : string() number() 必需要大寫Javascript學習筆記-數據類型相互轉化
C#中父類和子類之間相互轉換
mage all spa 分享 mic ack 子類 utl round 所用到的類文件:Person.cs:Student.cs:Teacher.cs:問題1:總結:1 父類不能直接強制轉換成子類2 只有父類對象指向子類,那麽父類是可以強制轉換成子類,如果父類對象沒有指向
Eigen四元數與尤拉角的相互轉化函式
1、原始碼 #include <iostream> #include <Eigen/Eigen> #include <stdlib.h> #include <Eigen/Geometry> #inclu