Android JSONArray之排序
當我們需要取得JSONArray中某個key的value,且希望得到的value是經過排序的,我們可以使用Collections中的sort()方法來對整個JSONArray進行排序,其關鍵作法要將原先的JSONArry用ArrayList存起來,再做排序;如此一來,當你想根據某個key的資料順序取得其他key的資料時就能方便許多,其作法如下:
說明:
2~9行:先宣告一個以JSONObect為資料型態的ArrayList,並將JSONArray中的JSONObject一一加入ArrayList
10~23行:使用Collections.sort()傳入剛剛的ArrayList,並用Comparator對該ArrayList進行比較排序
最後再將ArrayList重新宣告成JSONArray並回傳
public static JSONArray sortJsonArray(JSONArray array) {
ArrayList<JSONObject> jsons = new ArrayList<>();
for (int i = 0; i < array.length(); i++) {
try {
jsons.add(array.getJSONObject(i));
} catch (JSONException e) {
e.printStackTrace();
}
}
Collections.sort(jsons, new Comparator<JSONObject>() {
@Override
public int compare(JSONObject t1, JSONObject t2) {
String lid = "";
String rid = "";
try {
lid = t1.getString("yourKEYname");
rid = t2.getString("yourKEYname");
} catch (JSONException e) {
e.printStackTrace();
}
return lid.compareTo(rid);
}
});
return new JSONArray(jsons);
}
將欲排序的JSONArray丟入此function當中,即可得到一個根據你指定的key中的value所作排序的JSONArray說明:
2~9行:先宣告一個以JSONObect為資料型態的ArrayList,並將JSONArray中的JSONObject一一加入ArrayList
10~23行:使用Collections.sort()傳入剛剛的ArrayList,並用Comparator對該ArrayList進行比較排序
最後再將ArrayList重新宣告成JSONArray並回傳
留言
張貼留言