JAVA에서 JSON값을 정렬하기 위해선 몇 가지의 개념을 알아야 한다.
1. JAVA에서 제공하는 Collections의 메소드 sort()와 Comparator 클래스
2. JAVA에서 제공하는 String 메소드 compare(), compareTo()
3. JAVA 문법 override
override(오버라이드)란
기존에 존재하는 클래스를 상속 받아 필드나 메소드를 재정의 하는 것을 말한다.
4. JSON 라이브러리를 이용한 JSONObject, JSONArray 객체 활용
JSONObject객체는 JSON에서 object를 만드는 객체이다.
JSONObject 객체 활용 예시 |
JSONObject jsonObj = new JSONObject(); |
출력 결과 : { "key" : "value" } |
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;
JSONArray jsonArray = new JSONArray();
for (int i = 1; i < 10; i++) {
JSONObject jsonObj = new JSONObject();
jsonObj.put("number", i);
jsonObj.put("name", "amor_dev");
jsonArray.add(jsonObj);
}
JSONArray sortedJsonArray = new JSONArray();
List<JSONObject> jsonValues = new ArrayList<JSONObject>();
for (int i = 0; i < jsonArray.size(); i++) { //동적 배열 size(), 정적 배열 length()
jsonValues.add(jsonArray.getJSONObject(i));
System.out.println(i+""+jsonArray.getJSONObject(i));
}
Collections.sort( jsonValues, new Comparator<JSONObject>() {
private static final String KEY_NUM = "Number"; //JSON key 변수 선언 생성
@Override
public int compare(JSONObject a, JSONObject b) {
int valA = 0;
int valB = 0;
//값이 문자열 일 때
//String valA = "";
//String valA = "";
try {
valA = Integer.parseInt(a.getString(KEY_NUM));
valB = Integer.parseInt(b.getString(KEY_NUM));
//값이 문자열 일 때
//valA = (String) a.get(KEY_NUM);
//valB = (String) b.get(KEY_NUM);
}
catch (JSONException e) {
e.printStackTrace();
}
return Integer.compare(valA,valB);
//값이 문자열 일 때
//return valA.compareTo(valB);
}
});
for (int i = 0; i < jsonArray.size(); i++) {
sortedJsonArray.add(jsonValues.get(i));
}
sortedJsonArray안에 정렬된 JSON 값이 들어 있는 것을 확인할 수 있다.
위 코드와 같이 해도 되고 JSON의 key 값과 value값을 받는 클레스를 만들어서 사용할 수도 있다.
'Java' 카테고리의 다른 글
JAVA 제어자 접근 제어자, 기타 제어자 (0) | 2021.03.15 |
---|---|
JAVA 인터페이스 (0) | 2021.03.11 |
JAVA 클래스의 상속/ 클래스 상속 개념 (0) | 2021.03.07 |
JAVA 문자열 메소드: 문자열 길이, 문자열 자르기 (1) | 2021.03.05 |
JAVA 반복문: for문, 중첩 for문 (1) | 2021.03.03 |