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