您的位置:首页 > 博客中心 > 互联网 >

Object转换成Map(支持驼峰,下划线)

时间:2022-05-10 05:06

一.Object转换成Map,支持下划线转换成map

    

import com.google.common.base.CaseFormat;
import com.google.common.base.Converter;

class Utils{
     private static Converter converter = CaseFormat.LOWER_CAMEL.converterTo(CaseFormat.UPPER_UNDERSCORE);

    //Object转换为Map(实体对象转换成带下划线的map)
    public static Map objToMap(Object obj) throws Exception{
        Map map = new LinkedHashMap();
        Field[] fields = obj.getClass().getDeclaredFields();
        for(Field field : fields){
            field.setAccessible(true);
            map.put(converter.convert(field.getName()) , field.get(obj));
        }
        return map;
    }

}    

二.驼峰与下划线方式名称互相转换工具类

public class CamelUnderlineUtil {
 
    private static final char UNDERLINE =‘_‘;
    public static String camelToUnderline(String param) {
        if (StringUtil.isEmpty(param)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        int len = param.length();
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (Character.isUpperCase(c)) {
                sb.append(UNDERLINE);
                sb.append(Character.toLowerCase(c));
            } else {
                sb.append(c);
            }
        }
        return sb.toString();
    }
    
    public static String underlineToCamel(String param){
        if (StringUtil.isEmpty(param)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        int len = param.length();
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (c==UNDERLINE) {
                if(++i

三.Bean对象转Map方法

private Map convertObjectToMap(Object obj, Class clazz) throws Exception {
        Map dstMap = new HashMap();
        Field[] fields = obj.getClass().getDeclaredFields();
        for (Field field : fields) {
            if ("serialVersionUID".equals(field.getName())) {
                continue;
            }
 
            String dstName = CamelUnderlineUtil.camelToUnderline(field.getName());
            PropertyDescriptor pd;
            pd = new PropertyDescriptor(field.getName(), clazz);
            Method method = pd.getReadMethod();
            Object dstObject = method.invoke(obj);
            if (dstObject instanceof Date) {
                dstObject = convertToTimeStamp16((Date) dstObject);
            }
            if (dstObject instanceof ArrayList) {
                dstObject = "";
            }
            dstMap.put(dstName, StringUtil.isEmpty(dstObject) ? "" : dstObject.toString());
        }
        return dstMap;
    }

 

本类排行

今日推荐

热门手游