[Android] json file을 data class로 변환하기

ByWindow·2023년 8월 16일
0

Android

목록 보기
14/14
post-thumbnail
post-custom-banner

0. 준비사항


Parcelize 플러그인 추가

app 단위의 build.gradle.kts에서 plugins 안에 id("kotlin-parcelize") 추가

Gson 라이브러리 추가

app 단위의 build.gradle.kts에서 dependencies 안에 `implementation("com.google.code.gson:gson:2.8.9")` 추가

1. assets 디렉토리 생성


  • File > New > Folder > Assets Folder

  • 프로젝트 root 단위에 assets 디렉토리 생성

2. json 파일 생성


  • 1에서 생성한 assets 디렉토리 안에 json 파일 생성

3. 응답 받는 객체 정의


  • data class를 정의하고 json형태의 String을 객체로 변환하기 위해 @Parcelize 어노테이션을 붙여주고 Parcelable 인터페이스를 상속받도록 한다
  • data class의 생성자 변수명과 json의 key가 다를 때는 @SerializedName("key")를 붙여준다

4. json file to String


// MainActivity.kt
val jsonReader = assets.open("menus.json").reader()
val jsonString = jsonReader.readText()
...
jsonReader.close() // 호출자가 reader를 직접 닫아줘야 함
  • ContextThemeWrapper 내부 메서드인 getAssets 를 사용해서 assets 디렉토리의 파일에 접근
  • AssetManager 객체 내부의 open() 메서드를 통해 InputStream 반환
  • reader() : UTF-8 인코딩을 사용하는 InputStreamReader 생성
  • readText() : reader를 읽고 String을 반환

출력 결과

5. string to data class


val menu = Gson().fromJson(jsonString, MenuResponse::class.java)
  • Gson().fromJson() 메서드 이용
  • 첫번째 파라미터에 string 변수, 두번째 파라미터에 변환할 data class 타입 넣어주기

결과 확인

profile
step by step...my devlog
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 8월 16일

큰 도움이 되었습니다, 감사합니다.

답글 달기