Json中key驼峰命名转蛇形命名(下划线)
public static void main(String[] args) {
String str = "{\"userName\":\"tom1\",\"age\":18,\"address\":[{\"province\":\"上海市\"},{\"ciTy\":\"上海市\"},{\"disrtict\":\"静安区\"}]}";
JSONObject jsonObject = JSON.parseObject(str);
humpToSnake(jsonObject);
System.out.println(str);
System.out.println(jsonObject.toString());
}
/**
* 驼峰转蛇形 FastJson
*
* @param json {@link JSONObject} {@link JSONArray}
*/
public static void humpToSnake(Object json) {
// 如果是Json对象
if (json instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) json;
Set<String> tempKeys = new HashSet<>(jsonObject.keySet());
for (String key : tempKeys) {
Object value = jsonObject.get(key);
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < key.length(); i++) {
char c = key.charAt(i);
if (Character.isUpperCase(c) && i > 0) {
stringBuilder.append("_");
stringBuilder.append(Character.toLowerCase(c));
} else {
stringBuilder.append(c);
}
}
jsonObject.remove(key);
jsonObject.put(stringBuilder.toString(), value);
humpToSnake(value);
}
} else if (json instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) json;
for (Object o : jsonArray) {
humpToSnake(o);
}
}
}