안드로이드 프로그래밍[Kotiln Code]/Gson & Json

[kotlin] Gson & Json 저장 할수 있는 class 만들어 보기

훈츠 2020. 2. 9. 23:09
반응형

안녕하세요. 훈츠 입니다. 모두 즐겁게 공부하면서 안드로이드 앱 학습하고 계신가요? 오늘은 Gson 클래스 객체를 Json 객체로 만들고, 다시 Json 객체를 Gson 객체로 만들수 있는 클래스를 설명 드려보고자 합니다. 물론 객체를 만들지 않고도 가능하지만 객체로 만들어 놓고 사용하면 조금더 손쉽게 적용할수 있지 않을까 하는 생각에 만들어 보았습니다. 저처럼 아직 Gson 객체를 Json 객체로 만드는게 익숙하지 않으시는 분들은 제가 설명드리는 부분과 함께 클래스 가져가셔서 해당하는 부분만 일부 변경해서 사용하셔도 괜찮을거 같습니다. 

GsonConvert Class 를 만들어 봅니다. 

Contact라는 data class를 type으로 예시를 들어 만들었습니다.

data class Contact(var name:String, var number:String)

class GsonConvert (var person:Contact = Contact("","")){
    //variable define
    var gson : Gson
    var listType : TypeToken<MutableList<Contact>> = object : TypeToken<MutableList<Contact>>() {}
    var js :String = ""
    var gs = mutableListOf<Contact>()
    companion object{
        private var lastindex = 0   //lastindex
        var contacts = mutableListOf<Contact>()
    }
    init {
        gson = GsonBuilder().create() //gson객체 만들기
    }
    //Contact 객체 추가
    fun put(contact : Contact) {
        contacts.add(contact)
        lastindex = contacts.lastIndex
    }
    //Contacts List 객체 돌려주기
    fun get():MutableList<Contact>{
        return contacts
    }
    //Json 객체 돌려주기
    fun jsGet():String{
        js  = gson.toJson(contacts,listType.type)
        return js
    }
    //Gson 객체 돌려주기
    fun gsGet():MutableList<Contact> {
        gs  = gson.fromJson(js,listType.type)
        return gs
    }
    //Contacts List lastIndex 값 돌려주기
    fun lastIndex():Int{
        lastindex = contacts.lastIndex
        return lastindex
    }
}

메인 에서 값을 확인 해 보겠습니다. 

fun main(){
    var gsonconv = GsonConvert() //gsonconv 객체 만들기
    gsonconv.put(Contact("lkh","01")) //4개의 contact 객체 추가 하기
    gsonconv.put(Contact("cjs","02"))
    gsonconv.put(Contact("les","03"))
    gsonconv.put(Contact("les","03"))

    var contacts =gsonconv.get() //contacts 리스트 객체 받기
    contacts.forEach({
        println(it.toString()) //* 객체 내용 출력 해보기 
    })
}

 

출력 내용 입니다. contact형태 확인 

Json 객체를 받아서 출력 해 보았습니다. 

var js = gsonconv.jsGet() //json 객체 받기
println(js) // * 출력 해보기

출력 내용 입니다.  Json형태인 String 배열을 확인

Gson 객체를 받아서 출력 해 보았습니다. 

var gs = gsonconv.gsGet()
println(gs)

출력 내용 입니다.  클래스 형태인 Contact를 확인

Companion object 값으로 선언한 lastindex 값도 확인 해 보았습니다. 

gsonconv.put(Contact("les","03"))
println(gsonconv.lastIndex())

총 5개 : 0,1,2,3,4

이 GsonConvert 예제 를 이용해서, 내부 dataclass 나 type만 변경하면 얼마든지 응용이 가능합니다. 오늘도 즐거운 코딩 학습 되길 기대하며 오늘은 이만...다음에 또 뵙겠습니다. 

소스코드

http://gofile.me/6AMKe/YfU0kcL5z

 

Connecting...

{0}Synology C2 30일 무료 평가판{1}을 시작하여 Synology NAS에 가장 적합한 공용 클라우드 백업 서비스를 경험해 보십시오.

gofile.me

 

반응형