首先需要引入 fastjson 的 jar 包

public static void main(String[] args) {
    JSONArray array = new JSONArray();
    JSONObject obj1 = new JSONObject();
    obj1.put("score",70);
    obj1.put("name","张三");
    array.add(obj1);
    JSONObject obj2 = new JSONObject();
    obj2.put("score",80);
    obj2.put("name","李四");
    array.add(obj2);
    JSONObject obj3 = new JSONObject();
    obj3.put("score",60);
    obj3.put("name","王五");
    array.add(obj3);
    
    JSONArray result = jsonArraySort(array,"score",true);
    
    for (int i = 0; i < result.size(); i++) {
        System.out.println(result.getJSONObject(i).getString("name"));
    }
}

/**
 * array 传入待排序的 JSONArray
 * sortColName 排序字段
 * isAsc 升序还是降序,true表示升序
 * sortColName,isAsc 需要加 final,否则现有环境 jenkins 打版本会失败
 */
public static JSONArray jsonArraySort(JSONArray array, final String sortColName,
                               final boolean isAsc) {
    JSONArray sortedJsonArray = new JSONArray();
    List<JSONObject> jsonList = new ArrayList<JSONObject>();
    for (int i = 0; i < array.size(); i++) {
        jsonList.add(array.getJSONObject(i));
    }

    //将 JSONArray 转换成 List,本质上还是对 List 进行排序
    Collections.sort(jsonList, new Comparator<JSONObject>() {
        @Override
        public int compare(JSONObject o1, JSONObject o2) {
            String valA = o1.getString(sortColName);
            String valB = o2.getString(sortColName);
            if (isAsc) {
                // 升序
                return valA.compareTo(valB);
            } else {
                return valB.compareTo(valA);
            }
        }
    });
    // 此时jsonList已经是排完序的集合了
    for(JSONObject obj : jsonList) {
        sortedJsonArray.add(obj);
    }
    return sortedJsonArray;
}

输出结果:

王五
张三
李四

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐