Java -- 如何将一个 JSONArray 按照某字段排序
result = jsonArraySort(result,"localeMetricName",true);/*** result 传入的待排序JSONArray* sortColName 排序字段* isAsc 升序还是降序,true表示升序*/public JSONArray jsonArraySort(JSONArray result,String sortColNa...
·
首先需要引入 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;
}
输出结果:
王五
张三
李四
更多推荐




所有评论(0)