Java将json中key值下划线转为驼峰格式

时间:2025-02-16 07:32:31
import java.util.Set; public class JsonUtil { public static void convert(Object obj) { if (obj instanceof JSONArray) { JSONArray jsonArray = (JSONArray) obj; for (Object json : jsonArray) { convert(json); } } else if (obj instanceof JSONObject) { JSONObject json = (JSONObject) obj; Set<String> keySet = json.keySet(); String[] keyArray = keySet.toArray(new String[keySet.size()]); for (String key : keyArray) { Object value = json.get(key); String[] keyStrs = key.split("_"); if (keyStrs.length > 1) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < keyStrs.length; i++) { String keyStr = keyStrs[i]; if (!keyStr.isEmpty()) { if (i == 0) { sb.append(keyStr); } else { int c = keyStr.charAt(0); if (c >= 97 && c <= 122) { int v = c - 32; sb.append((char) v); if (keyStr.length() > 1) { sb.append(keyStr.substring(1)); } } else { sb.append(keyStr); } } } } json.remove(key); json.put(sb.toString(), value); } convert(value); } } } /** * 将json字符串中的key名称中包含下划线的字段,转成驼峰命名格式 * * @param str String格式的JSON串 * @return 转换后的对象(可能是JSONObject或JSONArray) */ public static Object convertUnderlineToCamelCase(String str) { Object obj = JSON.parse(str); convert(obj); return obj; } public static void main(String[] args) { String json = "{\n" + " \"test\": [\n" + " {\n" + " \"self_auth\": {\n" + " \"a_id\": \"123\",\n" + " \"b_num\": 7,\n" + " \"user_name\": \"oldlu\"\n" + " }\n" + " }\n" + " ]\n" + "}"; System.out.println(convertUnderlineToCamelCase(json)); } }