zoukankan      html  css  js  c++  java
  • java 对象转Map方法Demo

     
     /**
      * 用于对Object进行解析并且转换成Map键值对的形式
      *
      */
     public class ObjectUtils {
     
         private static final String JAVAP = "java.";
         private static final String JAVADATESTR = "java.util.Date";
     
         /**
          * 获取利用反射获取类里面的值和名称
          *
          * @param obj
          * @return
          * @throws IllegalAccessException
          */
         public static Map<String, Object> objectToMap(Object obj) throws IllegalAccessException {
             Map<String, Object> map = new HashMap<>();
             Class<?> clazz = obj.getClass();
             System.out.println(clazz);
             for (Field field : clazz.getDeclaredFields()) {
                 field.setAccessible(true);
                 String fieldName = field.getName();
                 Object value = field.get(obj);
                 map.put(fieldName, value);
             }
             return map;
         }
     
         /**
          * 利用递归调用将Object中的值全部进行获取
          *
          * @param timeFormatStr 格式化时间字符串默认<strong>2017-03-10 10:21</strong>
          * @param obj           对象
          * @param excludeFields 排除的属性
          * @return
          * @throws IllegalAccessException
          */
         public static Map<String, String> objectToMapString(String timeFormatStr, Object obj, String... excludeFields) throws IllegalAccessException {
             Map<String, String> map = new HashMap<>();
     
             if (excludeFields.length!=0){
                 List<String> list = Arrays.asList(excludeFields);
                 objectTransfer(timeFormatStr, obj, map, list);
             }else{
                 objectTransfer(timeFormatStr, obj, map,null);
             }
             return map;
         }
     
         /**
          * 递归调用函数
          *
          * @param obj           对象
          * @param map           map
          * @param excludeFields 对应参数
          * @return
          * @throws IllegalAccessException
          */
         private static Map<String, String> objectTransfer(String timeFormatStr, Object obj, Map<String, String> map, List<String> excludeFields) throws IllegalAccessException {
             boolean isExclude=false;
             //默认字符串
             String formatStr = "YYYY-MM-dd HH:mm:ss";
             //设置格式化字符串
             if (timeFormatStr != null && !timeFormatStr.isEmpty()) {
                 formatStr = timeFormatStr;
             }
             if (excludeFields!=null){
                 isExclude=true;
             }
             Class<?> clazz = obj.getClass();
             //获取值
             for (Field field : clazz.getDeclaredFields()) {
                 String fieldName = clazz.getSimpleName() + "." + field.getName();
                 //判断是不是需要跳过某个属性
                 if (isExclude&&excludeFields.contains(fieldName)){
                     continue;
                 }
                 //设置属性可以被访问
                 field.setAccessible(true);
                 Object value = field.get(obj);
                 Class<?> valueClass = value.getClass();
                 if (valueClass.isPrimitive()) {
                     map.put(fieldName, value.toString());
     
                 } else if (valueClass.getName().contains(JAVAP)) {//判断是不是基本类型
                     if (valueClass.getName().equals(JAVADATESTR)) {
                         //格式化Date类型
                         SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
                         Date date = (Date) value;
                         String dataStr = sdf.format(date);
                         map.put(fieldName, dataStr);
                     } else {
                         map.put(fieldName, value.toString());
                     }
                 } else {
                     objectTransfer(timeFormatStr, value, map,excludeFields);
                 }
             }
             return map;
         }
     
     
    

      

  • 相关阅读:
    HADOOP docker(六):hive简易使用指南
    HADOOP docker(四):安装hive
    HADOOP docker(二):HDFS 高可用原理
    Python 自用代码(调整日期格式)
    Python 自用代码(某方标准类网页源代码清洗)
    python合并多个csv文件并去重
    Python连接MySQL乱码(中文变问号)
    Shell实现循环执行curl向Solr导入json文件
    Python 自用代码(拆分txt文件)
    shell报错:未预期的符号***附近有语法错误
  • 原文地址:https://www.cnblogs.com/x-ll123/p/11889227.html
Copyright © 2011-2022 走看看