jsonArray中按某字段排序

时间:2025-02-28 18:05:34
/** * 对json数组排序, * @param jsonArr * @param sortKey 排序关键字 * @param is_desc is_desc-false升序列 is_desc-true降序 (排序字段为字符串) * @return */ public static String jsonArraySort(JSONArray jsonArr,String sortKey,boolean is_desc) { //存放排序结果json数组 JSONArray sortedJsonArray = new JSONArray(); //用于排序的list List<JSONObject> jsonValues = new ArrayList<JSONObject>(); //将参数json数组每一项取出,放入list for (int i = 0; i < jsonArr.size(); i++) { jsonValues.add(JSONObject.fromObject(jsonArr.getJSONObject(i))); } //快速排序,重写compare方法,完成按指定字段比较,完成排序 Collections.sort(jsonValues, new Comparator<JSONObject>() { //排序字段 private final String KEY_NAME = sortKey; //重写compare方法 @Override public int compare(JSONObject a, JSONObject b) { String valA = new String(); String valB = new String(); try { valA = a.getString(KEY_NAME); valB = b.getString(KEY_NAME); } catch (JSONException e) { e.printStackTrace(); } //是升序还是降序 if (is_desc){ return -valA.compareTo(valB); } else { return -valB.compareTo(valA); } } }); //将排序后结果放入结果jsonArray for (int i = 0; i < jsonArr.size(); i++) { sortedJsonArray.add(jsonValues.get(i)); } return sortedJsonArray.toString(); }