有复杂json串如下
{
"DEPT_ID":"1",
"DEPT_NAME":"教育部"
}
key值全部大写,并且又下划线分割;要求封装为如下bean
public class Bean {
private String deptId;
private String deptName;
public String getDeptId() {
return deptId;
}
public void setDeptId(String deptId) {
this.deptId = deptId;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
}
那就需要对json串的key进行转换 使用的是json-lib
/**
* 将key转为标准命名方式
* @param str
* @return
*/
private static String transferToRegularName(String str) {
char[] chars = str.toCharArray();
char[] res = new char[chars.length];
for(int i = 0, j = 0; i < chars.length;) {
if (chars[i] != '_') {
res[j] = Character.toLowerCase(chars[i]);
if ((i + 1) < chars.length) {
if (chars[i + 1] == '_') {
res[j + 1] = chars[i + 2];
j = j + 2;
i = i + 3;
} else {
i++;
j++;
}
} else {
i++;
j++;
}
} else {
res[j] = chars[i + 1];
j = j + 1;
i = i + 2;
}
}
return new String(res).trim();
}
/**
* 格式化json并转为bean
* @param jsonObject
* @param clz
* @return
*/
public static <T> T transferToObject(JSONObject jsonObject, Class<T> clz) {
JSONObject result = new JSONObject();
Iterator<String> keys = jsonObject.keys();
while(keys.hasNext()) {
String key = keys.next();
result.put(transferToRegularName(key), jsonObject.get(key));
}
return (T)JSONObject.toBean(result, clz);
}