Json -- 如何将一个JSONArray按照某字段排序

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

	//将 JSONArray 转换成 List,本质上还是对 List 进行排序
	Collections.sort(jsonValues, new Comparator<JSONObject>() {
		@Override
		public int compare(JSONObject o1, JSONObject o2) {
			String valA = o1.getString(sortColName);
			String valB = o2.getString(sortColName);
			if (isAsc) {
				// 升序
				return -valB.compareTo(valA);
			} else {
				return -valA.compareTo(valB);
			}
		}
	});
	for (int i = 0; i < result.size(); i++) {
		sortedJsonArray.add(jsonValues.get(i));
	}
	return sortedJsonArray;
}

你可能感兴趣的:(Java开发笔记)