JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,具有簡潔、易讀、易解析等特點。在Java中,有許多開源的JSON庫可供使用,例如Gson、Jackson、Fastjson等等。本文將介紹一種使用Java的JSONObject合并兩個或多個JSON對象的方法。
public static JSONObject merge(JSONObject... jsonObjects) { JSONObject result = new JSONObject(); for (JSONObject jsonObject : jsonObjects) { for (String key : jsonObject.keySet()) { Object value = jsonObject.get(key); if (result.containsKey(key)) { Object oldValue = result.get(key); if (oldValue instanceof JSONObject && value instanceof JSONObject) { result.put(key, merge((JSONObject) oldValue, (JSONObject) value)); } else if (oldValue instanceof JSONArray && value instanceof JSONArray) { result.put(key, merge((JSONArray) oldValue, (JSONArray) value)); } else { result.put(key, value); } } else { result.put(key, value); } } } return result; } private static JSONArray merge(JSONArray array1, JSONArray array2) { JSONArray result = new JSONArray(); result.addAll(array1); result.addAll(array2); return result; }
上述代碼中的merge方法接收兩個或多個JSONObject對象,并將它們合并到一個新的JSONObject中。該方法內(nèi)部使用遞歸算法,遍歷每個JSONObject的所有key及其對應的value值。如果在合并過程中遇到同名的key,則需要將其對應的value值合并。如果某個value值也是一個JSONObject或JSONArray,遞歸調(diào)用merge方法進行合并。如果該value值為普通類型(例如String、Number、Boolean等),則直接使用新的value值替換舊的值。
另外,當兩個JSONArray對象需要合并時,我們直接調(diào)用JSONArray的addAll方法將兩個數(shù)組合并到一個新的數(shù)組中。
總的來說,這種使用Java的JSONObject合并兩個或多個JSON對象的方法非常簡單、高效,并且具有良好的可擴展性。如果您在項目中需要合并JSON對象,可以嘗試使用本文介紹的方法。