List<Map>map中的key下划线转驼峰格式(Map转JSON)

public static final char UNDERLINE='_';
public static String underlineToCamel(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 (c==UNDERLINE){
            if (++i<len){
                sb.append(Character.toUpperCase(param.charAt(i)));
            }
        }else{
            sb.append(c);
        }
    }
    return sb.toString();
}
public static Map<String, String> toMap(Object object) {
    Map<String, String> data = new HashMap<String, String>();
    // 将json字符串转换成jsonObject
    JSONObject jsonObject = JSONObject.fromObject(object);
    Iterator ite = jsonObject.keys();
    // 遍历jsonObject数据,添加到Map对象
    while (ite.hasNext()) {
        String key = ite.next().toString();
        String value = jsonObject.get(key).toString();
        data.put(key, value);
    }
    // 或者直接将 jsonObject赋值给Map
    // data = jsonObject;
    return data;
}
public static void main(String[] args) {
    String str = "{'user_id':'1','user_name':'王德明','user_sex':'男',object_info':{'business_id':'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(underlineToCamel(_tmp[1]));
        } else {
            //替换''里的数值为驼峰
            sb.append(underlineToCamel(_tmp[0]));
        }
        sb.append(":");
    }

    System.out.println(sb.substring(0, sb.length() - 1).toString());
    String str1 = sb.substring(0, sb.length() - 1).toString();
    JSONObject  json = JSONObject .fromObject(str1);
    Map<String, String> map = toMap(json);
    Iterator it = map.keySet().iterator();
    while (it.hasNext()) {
        String s = (String) it.next();
        System.out.print("key:"+s+"\t");
        System.out.println("value:"+map.get(s));
    }
}

控制台出:

{'userId':'1','userName':'王德明','userSex':'男',objectInfo':{'businessId':'0001','objectInfo2':{'object1':'ok'}}}
key:userSex    value:男
key:userName    value:王德明
key:objectInfo'    value:{"businessId":"0001","objectInfo2":{"object1":"ok"}}
key:userId    value:1

jar: jackson-databind-2.0.5.jar 

猜你喜欢

转载自blog.csdn.net/qq_40256358/article/details/81632492