package com.bnl.core.util; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.HashMap; import java.util.Map; /** * java 對象轉換為Map key-value形式 * @author:libaoneng * @date 2019-10-15 13:07 **/ public class ObjectToMap { /** * 將一個類查詢方式加入map(屬性值為int型時,0時不加入, * 屬性值為String型或Long時為null和“”不加入) *注:需要轉換的必須是對象,即有屬性 */ public static Map<String, Object> setConditionMap(Object obj){ Map<String, Object> map = new HashMap<>(); if(obj==null){ return null; } Field[] fields = obj.getClass().getDeclaredFields();//獲取類的各個屬性值 for(Field field : fields){ String fieldName = field.getName();//獲取類的屬性名稱 if(getValueByFieldName(fieldName,obj)!=null)//獲取類的屬性名稱對應的值 map.put(fieldName, getValueByFieldName(fieldName,obj)); } return map; } /** * 根據屬性名獲取該類此屬性的值 * @param fieldName * @param object * @return */ public static Object getValueByFieldName(String fieldName,Object object){ String firstLetter=fieldName.substring(0,1).toUpperCase(); String getter = "get"+firstLetter+fieldName.substring(1); try { Method method = object.getClass().getMethod(getter, new Class[]{}); Object value = method.invoke(object, new Object[] {}); return value; } catch (Exception e) { return null; } } }