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

[kotlin] Gson & Json 이용 하여, arrayList값 저장 하기

훈츠 2020. 2. 3. 23:05
반응형

Sharedprefence 를 싱글톤으로 만들어 가볍게 앱의 이곳 저곳에서 값을 저장하고 있었는데, 많이 사용하는 arrayList 값 저장하는법에 대해 몇일간 블로깅을 통해 알아낸 결과 Gson 과 Json을 이용한다면 가능하다는 것을 알게 되었습니다. 하지만 그렇게 친절? 한 블로그를 찾지 못했고, 사실 이부분은 제가 기본이 없어서 그렇습니다. ㅠㅠ 코틀린 사이트에서 검색해서 알았는데 설명은 자바로 이루어져 있었습니다. 

Gson type을 Json type으로 변경하고 반대로 Json 을 Gson으로 변경하는 법을 순서대로 설명 드리겠습니다.


Gson Dependencies 에 라이브러리 추가 

build.gradle(Module:app) 에서 직접 추가 하셔도 좋고, file -> Project structure -> Dependencies -> '+' -> gson 검색 후 apply 하셔도됩니다.

1

2
3
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
implementation 'com.google.code.gson:gson:2.8.6' //현재 최신버젼
 
cs

Json으로 만들 data class 만들기 

data클래스가 아닌 일반 클래스로 만드시려면,  java처럼 getter와 setter를 만들어 주시면 됩니다. 

1
2
3
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
data class Tcon(val name: Stringval sms: Stringval time: String)
 
cs

"

Gson 객체 만들기 

1
2
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
var gson = GsonBuilder().create() 
cs
 

저장 type 지정 (다른 type도 지정 가능)

1
2
3
4
5
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
var listType : TypeToken<MutableList<Tcon>> = object : TypeToken<MutableList<Tcon>>() {}
var setType : TypeToken<MutableSet<Tcon>> = object : TypeToken<MutableSet<Tcon>>() {}
var mapType : TypeToken<MutableMap<String,Tcon>> = object : TypeToken<MutableMap<String,Tcon>>() {}
 
cs

gson data 

1
2
3
4
5
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
private var g1 : MutableList<Tcon> = mutableListOf(
                                            Tcon("hoons","가","1000"),
                                            Tcon("sunny","나","2000"))
 
cs

 

gson to json 객체 변환 

1
2
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
var strContact1 = gson.toJson(g1,listType.type) //listType.type은 위에서 만든 type
cs

 

 

sharedpreperence에 json 객체 저장하기 

1
2
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
App.prefs.setV("1",strContact1) //("1" <-key값입니다., strContact1)
cs

 

json to gson 객체 변환

1
2
3
//Hoons Blog---https://rain2002kr.tistory.com------------------------------------------------------------------코드///
val g11= App.prefs.getV("1")
var data1: MutableList<Tcon> = gson.fromJson(g11,listType.type)
cs

예제 코드 

https://github.com/rain2002kr/GsonToJsonWithPreference.git

 

rain2002kr/GsonToJsonWithPreference

Contribute to rain2002kr/GsonToJsonWithPreference development by creating an account on GitHub.

github.com

 

반응형