투케이2K

249. (kotlin/코틀린) [유틸 파일] jsonGetAllKeyList : json 전체 key 값 출력 실시 본문

Kotlin

249. (kotlin/코틀린) [유틸 파일] jsonGetAllKeyList : json 전체 key 값 출력 실시

투케이2K 2023. 4. 2. 12:09

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // ----------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [RETURN] jsonGetAllKeyList : json 전체 key 값 출력 실시
        // ----------------------------------------------------------------------------------
        fun jsonGetAllKeyList(data: String): String {

            /**
             * // -----------------------------------------
             * [jsonGetAllKeyList 메소드 설명]
             * // -----------------------------------------
             * 1. json 전체 key 값 출력 실시
             * // -----------------------------------------
             * 2. 호출 방식 :
             *
             * // [샘플 JSON 선언 실시]
             * val json = "{\n" +
             * "   \"Name\":\"Craig\",\n" +
             * "   \"Age\":10,\n" +
             * "   \"BookInterests\":[\n" +
             * "      {\n" +
             * "         \"Book\":\"The Kite Runner\",\n" +
             * "         \"Author\":\"Khaled Hosseini\"\n" +
             * "      },\n" +
             * "      {\n" +
             * "         \"Book\":\"Harry Potter\",\n" +
             * "         \"Author\":\"J. K. Rowling\"\n" +
             * "      }\n" +
             * "   ],\n" +
             * "   \"FoodInterests\":{\n" +
             * "      \"Breakfast\":[\n" +
             * "         {\n" +
             * "            \"Bread\":\"Whole wheat\",\n" +
             * "            \"Beverage\":\"Fruit juice\"\n" +
             * "         },\n" +
             * "         {\n" +
             * "            \"Sandwich\":\"Vegetable Sandwich\",\n" +
             * "            \"Beverage\":\"Coffee\"\n" +
             * "         }\n" +
             * "      ]\n" +
             * "   }\n" +
             * "}";
             *
             * C_Util.jsonGetAllKeyList(json)
             *
             * // -----------------------------------------
             * 3. 리턴 데이터 : JSON 전체 key 값
             *
             * [Name, Age, BookInterests, Book, Author, Book, Author, FoodInterests, Breakfast, Bread, Beverage, Sandwich, Beverage]
             * // -----------------------------------------
             * 4. 라이브러리 설치 : jackson
             * // -----------------------------------------
             */


            // [리턴 변수 선언]
            var returnData = ""
            var M_LOG = ""


            // [로직 처리 실시]
            try {

                // [널 체크 수행 실시]
                if (stringNotNull(data) == true) {

                    // [JSON 형식으로 파싱 가능 한지 확인]
                    if (stringJsonObjectEnable(data) == true) {

                        val keys: MutableList<String> = ArrayList()
                        val mapper = ObjectMapper()
                        val jsonNode = mapper.readTree(data)
                        val jsonParser = jsonNode.traverse()
                        while (!jsonParser.isClosed) {
                            if (jsonParser.nextToken() == JsonToken.FIELD_NAME) {
                                keys!!.add(jsonParser.currentName)
                            }
                        }

                        // [리턴 변수에 삽입]
                        if (keys != null && keys.size > 0) {
                            M_LOG = "[SUCCESS] : JSON KEY LIST"
                            returnData = keys.toString()
                        } else {
                            M_LOG = "[ERROR] : KEY LIST SIZE NULL"
                        }

                    } else {
                        M_LOG = "[ERROR] : JSON TYPE ERROR"
                    }
                } else {
                    M_LOG = "[ERROR] : INPUT DATA IS NULL"
                }

            } catch (e: Exception) {
                e.printStackTrace()
                M_LOG = "[EXCEPTION] : " + e.message.toString()
            }


            // [로그 출력 실시]
            //*
            S_Log.ltd("================================================")
            S_Log.cnt("[" + ACTIVITY_NAME + " >> " + getNowMethod(1) + " :: json 전체 key 값 확인 실시]")
            S_Log.cnt("-----------------------------------------")
            S_Log.cnt("[M_LOG :: $M_LOG]")
            S_Log.cnt("-----------------------------------------")
            S_Log.cnt("[RETURN :: $returnData]")
            S_Log.lbd("================================================")
            // */


            // [리턴 반환 실시]
            return returnData
        }
 

[결과 출력]

 

D///===========//: ================================================
I/: [C_Util >> jsonGetAllKeyList :: json 전체 key 값 확인 실시]
I/: -----------------------------------------
I/: [M_LOG :: [SUCCESS] : JSON KEY LIST]
I/: -----------------------------------------
I/: [RETURN :: [Name, Age, BookInterests, Book, Author, Book, Author, FoodInterests, Breakfast, Bread, Beverage, Sandwich, Beverage]]
D///===========//: ================================================

 

반응형
Comments