• Map的key转小写后转驼峰再转换成实体类


    转换的工具方法,只需把他们放入Util工具类中,或自己的类中即可使用;

        
        private Object mapToObject(Map<String, Object> map, Class<?> beanClass) throws Exception {
    		if (map == null)
    			return null;
    
    		String json=JSONUtils.toJSONString(toReplaceKeyLow(map));
    		return JSONArray.parseObject(json, beanClass);
    	}
    	public static String underlineToCamel2(String param){
        	param = param.toLowerCase();//此处为全部转小写,方便根据_判定后一位转驼峰
            if (param==null||"".equals(param.trim())){
                return "";
            }
            //使用正则表达式
            StringBuilder sb=new StringBuilder(param);
            Matcher mc= Pattern.compile("_").matcher(param);
            int i=0;
            while (mc.find()){
                int position=mc.end()-(i++);
                //String.valueOf(Character.toUpperCase(sb.charAt(position)));
                sb.replace(position-1,position+1,sb.substring(position,position+1).toUpperCase());
            }
            return sb.toString();
        }
        public static Map<String, Object> toReplaceKeyLow(Map<String, Object> map) {
            Map re_map = new HashMap();
            if(re_map != null) {
                Iterator var2 = map.entrySet().iterator();
    
                while(var2.hasNext()) {
                    Entry<String, Object> entry = (Entry)var2.next();
                    re_map.put(underlineToCamel2((String)entry.getKey()), map.get(entry.getKey()));
                }
    
                map.clear();
            }
    
            return re_map;
        }
    

    调用的例子,

    List reslist = null;
    //query的结构是List<Map<String,Object>()>()
    //TemplateAttachedRelation是一个实体类
    for (int i = 0; i < query.size(); i++) {
    		reslist.add((TemplateAttachedRelation) mapToObject((Map<String, Object>) query.get(i), TemplateAttachedRelation.class ));
    		}
    

    Map转驼峰

    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    public class CamelAndlineUtils {
    	public static void main(String[] args) {
            String str = "{'user_name':'ok','user_sex':0,object_info':{'business_code':'0001','object_info2':{'object_1':'ok'}}}";
            String strs[] = str.split(":");
            /*for (String is : strs) {
            	System.out.println(is);
            }*/
            StringBuilder sb = new StringBuilder();
            for (String o : strs) {
            	String _tmp[]  = o.split(",");
            	if(_tmp.length > 1){
            		//替换数组2的值为驼峰
            		sb.append(_tmp[0]).append(",").append(underlineToCamel2(_tmp[1]));
            	}else{
            		//替换''里的数值为驼峰
            		sb.append(underlineToCamel2(_tmp[0]));
            	}
            	
            	sb.append(":");
            }
            
            String str2 = "{'userName':'ok','userSex':0,objectInfo':{'businessCode':'0001','objectInfo2':{'object1':'ok'}}}";
            String strs2[] = str2.split(":");
            /*for (String is : strs) {
                System.out.println(is);
            }*/
            StringBuilder sb2 = new StringBuilder();
            for (String o : strs) {
                String _tmp[]  = o.split(",");
                if(_tmp.length > 1){
                    //替换数组2的值为驼峰
                    sb2.append(_tmp[0]).append(",").append(camelToUnderline(_tmp[1]));
                }else{
                    //替换''里的数值为驼峰
                    sb2.append(camelToUnderline(_tmp[0]));
                }
    
                sb2.append(":");
            }
            System.out.println(sb.substring(0,sb.length() - 1).toString());
            System.out.println(sb2.substring(0,sb2.length() - 1).toString());
    
            Map mymap = new HashMap<>();
            mymap.put("userName", "zhangsan");
            mymap.put("USER_ID", "zhangsan");
            mymap.put("USER_AGE", "zhangsan");
            mymap.put("USER_HHHH", "zhangsan");
            mymap.put("USER_NAEE", "zhangsan");
            Map replaceKeyLow = new HashMap<>();
            replaceKeyLow = toReplaceKeyLow(mymap);
            replaceKeyLow = null;
        }
    
    
        public static final char UNDERLINE='_';
        public static String camelToUnderline(String param){
            if (param==null||"".equals(param.trim())){
                return "";
            }
            int len=param.length();
            StringBuilder sb=new StringBuilder(len);
            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){
        	param = param.toLowerCase();
            if (param==null||"".equals(param.trim())){
                return "";
            }
            int len=param.length();
            StringBuilder sb=new StringBuilder(len);
            for (int i = 0; i < len; i++) {
                char c=param.charAt(i);
                if (c==UNDERLINE){
                    if (++i<len){
                        sb.append(Character.toUpperCase(param.charAt(i)));
                    }
                }else{
                    sb.append(c);
                }
            }
            return sb.toString();
        }
        public static String underlineToCamel2(String param){
        	param = param.toLowerCase();
            if (param==null||"".equals(param.trim())){
                return "";
            }
            StringBuilder sb=new StringBuilder(param);
            Matcher mc= Pattern.compile("_").matcher(param);
            int i=0;
            while (mc.find()){
                int position=mc.end()-(i++);
                //String.valueOf(Character.toUpperCase(sb.charAt(position)));
                sb.replace(position-1,position+1,sb.substring(position,position+1).toUpperCase());
            }
            return sb.toString();
        }
        public static Map<String, Object> toReplaceKeyLow(Map<String, Object> map) {
            Map re_map = new HashMap();
            if(re_map != null) {
                Iterator var2 = map.entrySet().iterator();
    
                while(var2.hasNext()) {
                    Entry<String, Object> entry = (Entry)var2.next();
                    re_map.put(underlineToCamel2((String)entry.getKey()), map.get(entry.getKey()));
                }
    
                map.clear();
            }
    
            return re_map;
        }
    }
    
  • 相关阅读:
    sql常用语句
    java学习(东软睿道)2019-09-06(预课)《随堂笔记》
    Servlet和JSP学习总结
    由字符集的转换想到的问题
    mysql主从搭建
    CentOS 源码安装MySQL5.7
    Linux搭建FTP服务器
    连接MySQL报错误代码 ERROR 1045时的解决方案
    [js]使用百度编辑器uediter时遇到的一些问题(span,div等被过滤)
    [css]将textarea前的文字设置在左上角
  • 原文地址:https://www.cnblogs.com/himonkey/p/9702649.html
Copyright © 2020-2023  润新知