Java把Map轉(zhuǎn)為對(duì)象的實(shí)現(xiàn)代碼
1、map轉(zhuǎn)java對(duì)象
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.mes.common.core.utils.StringUtils; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger;
/** * @Author: best_liu * @Description: map轉(zhuǎn)java對(duì)象 * @Date: 8:35 2022/3/22 **/ public static Object convertToObject(Class clazz, Map<String, Object> map) throws IntrospectionException, InstantiationException, IllegalAccessException { BeanInfo bi = Introspector.getBeanInfo(clazz); Object obj = clazz.newInstance(); PropertyDescriptor[] pds = bi.getPropertyDescriptors(); String pName; for (PropertyDescriptor pd : pds) { pName = pd.getName(); if (map.containsKey(pName)) { try { if (pd.getPropertyType().getName().equals("java.lang.Long")) { if(StringUtils.isNotEmpty(map.get(pName).toString())){ pd.getWriteMethod().invoke(obj, Long.parseLong(map.get(pName).toString())); } // else{ // pd.getWriteMethod().invoke(obj, map.get(pName)); // } } else { pd.getWriteMethod().invoke(obj, map.get(pName)); } } catch (Exception ex) { Logger.getLogger(MapUtil.class.getName()).log(Level.SEVERE, null, ex); } } } return obj; }
2、java對(duì)象轉(zhuǎn)map
/** * @Author: best_liu * @Description: java對(duì)象轉(zhuǎn)map * @Date: 8:35 2022/3/22 **/ public static Map<String, String> objectToMap(Object obj) { if (obj == null) { return null; } Map<String, String> map = new HashMap<String, String>(); try { 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; String v = null; if (value != null) { v = value.toString(); } map.put(key, v); } } catch (Exception e) { e.printStackTrace(); } return map; } /** * @Author: best_liu * @Description: java對(duì)象轉(zhuǎn)map * @Date: 8:35 2022/3/22 **/ public static Map<String, Object> objectToMapObj(Object obj) { if (obj == null) { return null; } Map<String, Object> map = new HashMap<String, Object>(); try { 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); } } catch (Exception e) { e.printStackTrace(); } return map; }
3、Map轉(zhuǎn)換為Json字符串
/** * @Author: best_liu * @Description: Map轉(zhuǎn)換為Json字符串 * @Date: 8:35 2022/3/22 **/ public static String mapToJsonString(Map map) { JSONObject json = new JSONObject(); Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry<String, String> entry = entries.next(); json.put(entry.getKey(), entry.getValue()); } return json.toString(); }
4、Json字符串轉(zhuǎn)換為Map
/** * @Author: best_liu * @Description: Json字符串轉(zhuǎn)換為Map * @Date: 8:35 2022/3/22 **/ public static Map<String, Long> jsonStringToMap(String str) { Map<String, Long> map = (Map<String, Long>) JSON.parse(str); return map; }
到此這篇關(guān)于Java把Map轉(zhuǎn)為對(duì)象的實(shí)現(xiàn)代碼的文章就介紹到這了,更多相關(guān)Java Map轉(zhuǎn)為對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java SpringBoot自定義注解,及自定義解析器實(shí)現(xiàn)對(duì)象自動(dòng)注入操作
這篇文章主要介紹了java SpringBoot自定義注解,及自定義解析器實(shí)現(xiàn)對(duì)象自動(dòng)注入操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08SpringBoot如何實(shí)現(xiàn)持久化登錄狀態(tài)獲取
這篇文章主要介紹了SpringBoot 如何實(shí)現(xiàn)持久化登錄狀態(tài)獲取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java動(dòng)態(tài)代理語(yǔ)法Proxy類原理詳解
這篇文章主要介紹了Java動(dòng)態(tài)代理語(yǔ)法Proxy類原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04PowerJob的WorkerHealthReporter工作流程源碼解讀
這篇文章主要為大家介紹了PowerJob的WorkerHealthReporter工作流程源碼解讀,2023-12-12基于Freemarker和xml實(shí)現(xiàn)Java導(dǎo)出word
這篇文章主要介紹了基于Freemarker和xml實(shí)現(xiàn)Java導(dǎo)出word,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Java常用面板之JScrollPane滾動(dòng)面板實(shí)例詳解
這篇文章主要介紹了Java常用面板JScrollPane的簡(jiǎn)單介紹和一個(gè)相關(guān)實(shí)例,,需要的朋友可以參考下。2017-08-08