Android JSONArray之排序

當我們需要取得JSONArray中某個key的value,且希望得到的value是經過排序的,我們可以使用Collections中的sort()方法來對整個JSONArray進行排序,其關鍵作法要將原先的JSONArry用ArrayList存起來,再做排序;如此一來,當你想根據某個key的資料順序取得其他key的資料時就能方便許多,其作法如下:

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並回傳

留言

這個網誌中的熱門文章

Android 語音輸入(Speech To Text)

Android JSON Parse: JSONObject內又包了一個JSONObject