투케이2K

244. (kotlin/코틀린) [GSON] string 문자열 데이터를 data class 데이터 클래스 모델로 변환 실시 (string to data class) 본문

Kotlin

244. (kotlin/코틀린) [GSON] string 문자열 데이터를 data class 데이터 클래스 모델로 변환 실시 (string to data class)

투케이2K 2023. 3. 31. 22:47

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[호출 : 소스 코드]

        // [JSON 형식 String 문자열 생성]
        var jsonString = "{\"key_age\":29,\"key_item\":[{\"key_lang\":\"Java\",\"key_tool\":\"Android\"},{\"key_lang\":\"Swift\",\"key_tool\":\"Xcode\"}],\"key_name\":\"투케이\",\"key_note\":{\"key_blog\":\"twok.blog\"}}"


        // [String to data class 변환 실시]
        var mPerson = Gson().fromJson(jsonString, M_Person::class.java)


        // [로그 출력 실시]
        S_Log.ltd("================================================")
        S_Log.cnt("[" + ACTIVITY_NAME + " >> " + C_Util.getNowMethod(1) + " :: 로그 출력]")
        S_Log.cnt("[jsonString :: "+mPerson.name.toString()+"]")
        S_Log.cnt("[jsonString :: "+mPerson.age.toString()+"]")
        S_Log.cnt("[jsonString :: "+mPerson.note.blog+"]")
        S_Log.cnt("[jsonString :: "+mPerson.items.toString()+"]")

[data class : 소스 코드]

package com.example.kotlinproject

import com.google.gson.annotations.SerializedName

data class M_Person(


    /**
     * // --------------------------------------------------------------------------------------
     * TODO [클래스 설명]
     * // --------------------------------------------------------------------------------------
     * 1. GSON 모델 클래스
     * // --------------------------------------------------------------------------------------
     * 2. @SerializedName : JSON 객체 생성 시 표시될 key name
     * // --------------------------------------------------------------------------------------
     * 3. @Expose : 데이터가 null 일 경우 json 생성 시 제외 설정
     * // --------------------------------------------------------------------------------------
     * 4. build.gradle 설정 :
     *
     * implementation 'com.google.code.gson:gson:2.8.6'
     * // --------------------------------------------------------------------------------------
    try {

    // [JSON 생성에 필요한 데이터 선언]
    var note = Note("twok.blog")


    // [JSON 생성에 필요한 데이터 선언]
    var items = ArrayList<Item>()
    items.add(Item("Java", "Android"))
    items.add(Item("Swift", "Xcode"))


    // [M_Person 클래스 생성 실시]
    var m_person = M_Person("투케이", 29, note, items)


    // [GSON 사용해 Object to Json 변환 실시]
    var jsonString = Gson().toJson(m_person)


    // [로그 출력 실시]
    S_Log.ltd("================================================")
    S_Log.cnt("[" + ACTIVITY_NAME + " >> " + C_Util.getNowMethod(1) + " :: 로그 출력]")
    S_Log.cnt("[jsonString :: "+jsonString+"]")
    S_Log.lbd("================================================")

    }
    catch (e: Exception) {
    e.printStackTrace()
    }
     * // --------------------------------------------------------------------------------------
     * */





    /**
     * // --------------------------------------------------------------------------------------
     * // TODO [빠른 로직 찾기 : 주석 로직 찾기]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] :
     * // --------------------------------------------------------------------------------------
     * */





    // -----------------------------------------------------------------------------------------
    // TODO [JSON KEY DATA]
    // -----------------------------------------------------------------------------------------

    // [JSON KEY]
    @SerializedName("key_name") var name: String,

    // -------------------------------------------

    // [JSON KEY]
    @SerializedName("key_age") var age: Int,

    // -------------------------------------------

    // [JSON KEY]
    @SerializedName("key_note") var note: Note,

    // -------------------------------------------

    // [JSON KEY]
    @SerializedName("key_item") var items: ArrayList<Item>

    // -------------------------------------------


) // TODO [클래스 종료]





// -----------------------------------------------------------------------------------------
// [JSON OBJECT]
data class Note (

    @SerializedName("key_blog") var blog : String

) // TODO [클래스 종료]
// -----------------------------------------------------------------------------------------





// -----------------------------------------------------------------------------------------
// [JSON ARRAY]
data class Item (

    @SerializedName("key_lang") var lang : String,

    @SerializedName("key_tool") var tool : String

) // TODO [클래스 종료]
// -----------------------------------------------------------------------------------------

[결과 출력]

 

D///===========//: ================================================
I/: [A_Intro >> onCreate :: 로그 출력]
I/: [jsonString :: 투케이]
I/: [jsonString :: 29]
I/: [jsonString :: twok.blog]
I/: [jsonString :: [Item(lang=Java, tool=Android), Item(lang=Swift, tool=Xcode)]]
D///===========//: ================================================

 

반응형
Comments