Java對JSON去重是一種非常常見的需求。下面我們將討論如何使用Java進行JSON去重。
/** * 對json數據進行去重 * @param jsonArray 需要去重的json數組 * @param key 唯一標識字段的名稱 * @return JSONArray 去重后的json數組 */ public static JSONArray distinct(JSONArray jsonArray, String key) { Setset = new HashSet (); JSONArray newArr = new JSONArray(); for (int i = 0; i< jsonArray.size(); i++) { JSONObject obj = jsonArray.getJSONObject(i); String keyValue = obj.getString(key); if (!set.contains(keyValue)) { set.add(keyValue); newArr.add(obj); } } return newArr; }
以上代碼實現了針對JSON數組按照唯一標識字段進行去重。使用set保存已經添加到新的JSONArray中的元素,只將新元素添加到新的JSONArray中即可。
調用該方法只需要傳入需要去重的JSON數組和唯一標識字段名即可。例如:
JSONArray jsonArray = new JSONArray(); JSONObject obj1 = new JSONObject(); obj1.put("id", 1); obj1.put("name", "張三"); jsonArray.add(obj1); JSONObject obj2 = new JSONObject(); obj2.put("id", 2); obj2.put("name", "李四"); jsonArray.add(obj2); JSONObject obj3 = new JSONObject(); obj3.put("id", 1); obj3.put("name", "王五"); jsonArray.add(obj3); JSONArray newArr = distinct(jsonArray, "id"); System.out.println(newArr);
以上代碼輸出結果為:
[{"id":1,"name":"張三"},{"id":2,"name":"李四"}]
可以看到,id為1的元素被去重了。
使用Java對JSON進行去重,可以很方便地解決需要去重的問題。
上一篇vue循環組件案例
下一篇jquery 選擇器使用