java实体类转成map的实现

java实体类转成map的实现

目录

java实体类转成map

1.第一种

2.第二种

java实体类与map集合互转

java实体类转成map 1.第一种  <!-- 配置gson -->         <dependency>             <groupId>com.google.code.gson</groupId>             <artifactId>gson</artifactId>             <version>2.8.6</version>         </dependency>        Map<String, Object> map = null;   String jsonString = JSONUtil.toJsonStr(uploadBaseEntity);        Gson gson = new Gson();         map = new HashMap<>();         map = gson.fromJson(jsonString, map.getClass()); 2.第二种 /**      * 对象转化为Map      *      * @param obj      * @return      * @throws Exception      */     public static Map<String, String> objectToMap01(Object obj) throws Exception {         if (obj == null) {             return null;         }         Map<String, String> map = new HashMap<String, String>();         Field[] declaredFields = obj.getClass().getDeclaredFields();         for (Field field : declaredFields) {             field.setAccessible(true);             map.put(field.getName(), (String) field.get(obj));         }         return map;     } java实体类与map集合互转

废话不说,直接上代码!留着用吧...

package com.ddm.message.test; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /**  * Java实体类与Map互转  * @author Administrator  *  */ public class entityMapTransUtils {     private static final Logger logger = LoggerFactory.getLogger(entityMapTransUtils.class);     /**      * Java实体类转Map:方法一      * @param obj      * @return      */     public static Map<String, Object> entityToMap1(Object obj){         Map<String, Object> map = new HashMap<String, Object>();         Class<?> clazz = obj.getClass();         for(Field field : clazz.getDeclaredFields()){             field.setAccessible(true);             String fieldName = field.getName();             Object object = null;             try {                 object = field.get(obj);             } catch (IllegalArgumentException | IllegalAccessException e) {                 logger.info(e.getMessage());             }             map.put(fieldName, object);         }         return map;     }     /**      * Java实体类转Map:方法二      * @param obj      * @return      */     public static Map<String, Object> entityToMap2(Object obj){         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();                 // 过滤class属性                 if (!key.equals("class")) {                     // 得到property对应的getter方法                     Method getter = property.getReadMethod();                     Object value = getter.invoke(obj);                     map.put(key, value);                 }             }         } catch (Exception e) {             logger.info(e.getMessage());         }         return map;     }     /**      * Map转实体类:要转换的Map的key跟实体类属性名相同的数据会转过去,不相同的字段会为null      * @param clazz      * @param map      * @return      */     public static <T> T mapToEntity1(Class<T> clazz,Map<String, Object> map){         T obj = null;         try {             BeanInfo beanInfo = Introspector.getBeanInfo(clazz);             obj = clazz.newInstance(); // 创建 JavaBean 对象             PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();             // 给 JavaBean 对象的属性赋值             for (int i = 0; i < propertyDescriptors.length; i++) {                 PropertyDescriptor descriptor = propertyDescriptors[i];                 String propertyName = descriptor.getName();                 if (map.containsKey(propertyName)) {                     Object value = map.get(propertyName);                     Object[] args = new Object[1];                     args[0] = value;                     try {                         descriptor.getWriteMethod().invoke(obj, args);                     } catch (InvocationTargetException e) {                         logger.info(e.getMessage());                     }                 }             }         } catch (IllegalAccessException e) {             logger.info(e.getMessage());         } catch (IntrospectionException e) {             logger.info(e.getMessage());         } catch (IllegalArgumentException e) {             logger.info(e.getMessage());         } catch (InstantiationException e) {             logger.info(e.getMessage());         }         return (T)obj;     } }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持易知道(ezd.cc)。

推荐阅读

    学习写字楼新选择6000元主流配置

    学习写字楼新选择6000元主流配置,,这种配置需要考虑双核心的办公和娱乐平台,充分考虑办公室的办公需求和娱乐需求,以约6000元的预算和cost-e

    酷睿I7 配置

    酷睿I7 配置,配置,玩家国度啦华硕 Rampage II Extreme(3800元)如果米不够,也可以把Extreme改为Gene,不过是小板内存推荐金士顿6G DDR3 2000骇

    提高3A四核羿龙II游戏配置的性能

    提高3A四核羿龙II游戏配置的性能,,以节能环保为主题的IT产业,目前3A低端平台处理器、主板芯片组、独立开发卡性能突出,特别是在与AMD的处理

    opporeno8参数配置及价格

    opporeno8参数配置及价格,面部,亿元,Oppo的荣誉2020年1月4日,接近屏幕关闭传感器是否支持双卡:支持oppor11splus什么时候上市的Oppo R11S P

    查看配置:酷睿i3530集展示办公平台

    查看配置:酷睿i3530集展示办公平台,,由于时间和精力的关系,我们不可能对所有的配置进行评论,希望我们能理解,我希望我们的评论能在那些需要帮

    3500元超额值学生娱乐结构的优化配置

    3500元超额值学生娱乐结构的优化配置,,作为一个DIY的主流用户领域的学生,每个用户51学生攒机的高峰。因为学生用户没有稳定的收入来源,攒机

    电脑配置快捷键|查看电脑配置快捷键

    电脑配置快捷键|查看电脑配置快捷键,,查看电脑配置快捷键1.在win10中,快捷键组合win+E已经变成了“快速访问”,不再是以前的“我的电脑了”2

    6000元教你黑盒5000+权限配置

    6000元教你黑盒5000+权限配置,,一系列的价格后,最经典的AMD双核处理器mdash;mdash;Athlon 64 X2 5000 +黑版mdash;mdash;目前的价格已经低至565