Json中key驼峰命名转蛇形命名(下划线)

时间:2025-02-16 11:26:22
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); } } }