原创

Java-jsonArray按某个字段排序

public static void main(String[] args) {
String m = "[{\"id\":\"175\",\"name\":\"安全管理员\",\"type\":\"role\",\"parent_id\":\"1\",\"parents\":[\"1\"],\"is_necessary\":\"1\"},{\"id\":\"180\",\"name\":\"安全管理员\",\"type\":\"role\",\"parent_id\":\"1\",\"parents\":[\"1\"],\"is_necessary\":\"1\"},{\"id\":\"100\",\"name\":\"安全管理员\",\"type\":\"role\",\"parent_id\":\"1\",\"parents\":[\"1\"],\"is_necessary\":\"1\"}]";
String S = jsonArrayAscSort(m,"id");
System.out.println(S);
}

public static String jsonArrayAscSort(String jsonArrStr,String key) {
if (StringUtils.isBlank(jsonArrStr)) {
return "";
}
if (StringUtils.isBlank(key)) {
return jsonArrStr;
}
// json字符串转为JSONArray
JSONArray jsonArr = JSON.parseArray(jsonArrStr);
//存放排序结果json数组
JSONArray sortedJsonArray = new JSONArray();
// 用于排序的list
List<JSONObject> list = new ArrayList<JSONObject>();
//遍历待排序的json数组,并将数据放入list
for (int i = 0; i < jsonArr.size(); i++) {
list.add(jsonArr.getJSONObject(i));
}
// 因为json在的id字段本身就是String,所以这里很有可能出现带字母的值,所以不要随便使用getInteger
list.sort(Comparator.comparing(a -> a.getString(key)));
//将排序后结果放入结果jsonArray
for (int j = 0; j < jsonArr.size(); j++) {
sortedJsonArray.add(list.get(j));
}
return sortedJsonArray.toJSONString();
}
正文到此结束
本文目录