Notice
Recent Posts
Recent Comments
Link
투케이2K
276. (kotlin/코틀린) [유틸 파일] jsonArrayKeySort : jsonArray jsonObject 형식 데이터 특정 key 값 기준 정렬 (sort) 수행 본문
Kotlin
276. (kotlin/코틀린) [유틸 파일] jsonArrayKeySort : jsonArray jsonObject 형식 데이터 특정 key 값 기준 정렬 (sort) 수행
투케이2K 2023. 4. 25. 21:48[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Kotlin
[소스 코드]
// ----------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [RETURN] jsonArrayKeySort : jsonArray jsonObject 형식 데이터 특정 key 값 기준 정렬 수행
// ----------------------------------------------------------------------------------
fun jsonArrayKeySort(jsonArray: JSONArray?, key: String): JSONArray {
/**
* // -----------------------------------------
* [jsonArrayKeySort 메소드 설명]
* // -----------------------------------------
* 1. jsonArray jsonObject 형식 데이터 특정 key 값 기준 정렬 수행
* // -----------------------------------------
* 2. 호출 방식 :
*
* var sample = "[{\"key_1\":\"value_1\",\"step\":1},{\"key_3\":\"value_3\",\"step\":3},{\"key_10\":\"value_10\",\"step\":10},{\"key_2\":\"value_2\",\"step\":2}]"
*
* C_Util.jsonArrayKeySort(JSONArray(sample), "step")
*
* // -----------------------------------------
* 3. 리턴 데이터 : 특정 key 값 기준으로 정렬된 데이터
*
* [{"key_1":"value_1","step":1},{"key_2":"value_2","step":2},{"key_3":"value_3","step":3},{"key_10":"value_10","step":10}]
* // -----------------------------------------
*/
// [리턴 데이터 선언 실시]
var returnData = JSONArray()
// [로직 처리 수행 실시]
try {
// [사전 인풋 데이터 널 체크 실시]
if (jsonArray != null && jsonArray.length() > 0 && jsonArray.toString().contains(key) == true) { // [널이 아니고, key 값을 포함하는 경우]
// [1]. [jsonArray >> List 변환 실시]
val copyList: MutableList<JSONObject> = ArrayList()
for (i in 0 until jsonArray.length()) {
copyList.add(jsonArray.getJSONObject(i)) // list 에 삽입 실시
}
// [2]. [Collections 을 사용해서 List 배열 데이터 정렬 실시]
Collections.sort(copyList, object : Comparator<JSONObject> {
override fun compare(a: JSONObject, b: JSONObject): Int {
// TODO [value 변수 선언]
var value_A = ""
var value_B = ""
try {
// TODO [value 기준 정렬]
value_A = a[key].toString() // [정렬하려는 key 지정]
value_B = b[key].toString() // [정렬하려는 key 지정]
} catch (e: JSONException) {
e.printStackTrace()
}
// TODO [value 기준 정렬]
if (C_Util.stringIsNumber(value_A) == true && C_Util.stringIsNumber(value_B) == true){
return Integer.compare(value_A.toInt(), value_B.toInt()) // [integer]
}
else {
return value_A.compareTo(value_B) // [string]
}
}
})
// [3]. [정렬된 List 를 다시 jsonArray 에 담기 실시]
returnData = JSONArray(copyList)
}
} catch (e: java.lang.Exception) {
e.printStackTrace()
}
// [로그 출력]
// ===============================================================
S_Log._D_("jsonArrayKeySort :: jsonArray jsonObject 형식 데이터 특정 key 값 기준 정렬 수행", arrayOf(
"INPUT [JSON] :: " + jsonArray.toString(),
"INPUT [KEY] :: $key",
"RETURN :: $returnData"
)
)
// ===============================================================
// [리턴 데이터 반환 실시]
return returnData
}
반응형
'Kotlin' 카테고리의 다른 글
Comments