투케이2K

272. (AndroidStudio/android/java) jsonArray jsonObject 형태로 저장된 데이터 특정 json key 값 기준으로 정렬 실시 본문

Android

272. (AndroidStudio/android/java) jsonArray jsonObject 형태로 저장된 데이터 특정 json key 값 기준으로 정렬 실시

투케이2K 2022. 2. 24. 15:44

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스 코드]

    public void testMain(){
        try {

            // [초기 jsonArray 객체 생성 실시]
            JSONArray jsonArray = new JSONArray();


            // [jsonObj 데이터 생성 실시]
            JSONObject jsonObject_1 = new JSONObject();
            jsonObject_1.put("key_1", "value_1");
            jsonObject_1.put("step", 1);

            JSONObject jsonObject_3 = new JSONObject();
            jsonObject_3.put("key_3", "value_3");
            jsonObject_3.put("step", 3);

            JSONObject jsonObject_2 = new JSONObject();
            jsonObject_2.put("key_2", "value_2");
            jsonObject_2.put("step", 2);


            // [jsonArray 배열에 jsonObj 데이터 삽입 실시]
            jsonArray.put(jsonObject_1);
            jsonArray.put(jsonObject_3);
            jsonArray.put(jsonObject_2);
            Log.i("---","---");
            Log.d("//===========//","================================================");
            Log.i("","\n"+"[testMain >> 초기 jsonArray 데이터 확인]");
            Log.i("","\n"+"[jsonArray :: "+jsonArray.toString()+"]");
            Log.d("//===========//","================================================");
            Log.i("---","---");


            // [jsonArray >> List 에 담기 수행 실시]
            List<JSONObject> copyList = new ArrayList<JSONObject>();
            for (int i=0; i<jsonArray.length(); i++){
                copyList.add(jsonArray.getJSONObject(i)); // list 에 삽입 실시
            }


            // [Collections 을 사용해서 List 배열 데이터 정렬 실시]
            Collections.sort( copyList , new Comparator<JSONObject>() {
                private static final String KEY = "step"; // TODO [정렬하려는 jsonObject key]
                @Override
                public int compare(JSONObject a, JSONObject b) {

                    // TODO [정수값 value 기준 정렬]
                    int value_A = 0;
                    int value_B = 0;

                    // TODO [문자열값 value 기준 정렬]
                    // String value_A = "";
                    // String value_B = "";
                    try {
                        // TODO [정수값 value 기준 정렬]
                        value_A = Integer.parseInt(a.getString(KEY)); // [정렬하려는 key 지정]
                        value_B = Integer.parseInt(b.getString(KEY)); // [정렬하려는 key 지정]

                        // TODO [문자열값 value 기준 정렬]
                        // value_A = (String) a.get(KEY); // [정렬하려는 key 지정]
                        // value_B = (String) b.get(KEY); // [정렬하려는 key 지정]
                    }
                    catch (JSONException e) {
                        e.printStackTrace();
                    }
                    // TODO [정수값 value 기준 정렬]
                    return Integer.compare(value_A, value_B);


                    // TODO [문자열값 value 기준 정렬]
                    //return value_A.compareTo(value_B);
                }
            });


            // [정렬된 List 를 다시 jsonArray 에 담기 실시]
            JSONArray sortArray = new JSONArray(copyList);
            Log.i("---","---");
            Log.w("//===========//","================================================");
            Log.i("","\n"+"[testMain >> 정렬 jsonArray 데이터 확인]");
            Log.i("","\n"+"[sortArray :: "+sortArray.toString()+"]");
            Log.w("//===========//","================================================");
            Log.i("---","---");
        }
        catch (Exception e){
            e.printStackTrace();
        }
    }
 

[결과 출력]

 

반응형
Comments