Moshi
Moshi는 Square에서 개발한 JSON Parser 라이브러리입니다.
Gson과 유사하지만, 성능이 더 빠르고 코틀린과의 호환성이 더 높은 특징을 가지고 있습니다.
또한, Moshi는 직렬화 및 역직렬화를 보다 쉽게 할 수 있도록 지원합니다.
- 직렬화 : 객체를 저장 혹은 전송 가능한 상태의 특정 포맷 상태로 변환하는 과정
- 역직렬화 : 직렬화된 데이터를 다시 객체로 변환하는 과정
Moshi 사용하기
1. Manifest에 권한 선언
Moshi를 사용하기 위해서 인터넷에 대한 권한을 추가합니다.
<uses-permission android:name="android.permission.INTERNET" />
2. build.gradle에 의존성 추가
Moshi를 사용하기 위해서 build.gradle에 Moshi 라이브러리를 추가합니다.
implementation 'com.squareup.retrofit2:converter-moshi:2.9.0'
implementation 'com.squareup.moshi:moshi-kotlin:1.14.0'
3. 데이터 클래스 작성
가져올 JSON에서 필요한 데이터를 파악해서 data class를 작성합니다.
아이템 제목, 링크, 설명 정보가 필요하다고 하면 다음과 같이 작성합니다.
@JsonClass 어노테이션은 Moshi가 클래스를 변환하는 데 사용되는 Adapter를 생성하도록 지시합니다.
@field:Json 어노테이션은 Moshi에게 JSON 필드 이름과 Kotlin 속성 이름 간의 매핑을 지정합니다.
@JsonClass(generateAdapter = true)
data class SearchItem(
@field:Json(name = "title") val title: String,
@field:Json(name = "link") val link: String,
@field:Json(name = "content") val content: String
)
4. 실제로 적용
Retrofit 객체를 생성할 때 addConverterFactory()를 사용합니다.
addConverterFactory()는 JSON 형식의 파일을 데이터 클래스 형식으로 자동으로 변환해줍니다.
여기에 MoshiConverterFactory를 추가하여 Moshi와 Retrofit이 JSON을 변환하도록 해줍니다.
object RetrofitClient {
private val okHttpClient = OkHttpClient.Builder()
.addInterceptor(AppInterceptor())
.build()
private val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
private val retrofit = Retrofit.Builder()
.baseUrl("https://.../")
.client(okHttpClient)
.addConverterFactory(MoshiConverterFactory.create(moshi))
.build()
val service: SearchService by lazy {
retrofit.create(SearchService::class.java)
}
}
728x90
반응형
'안드로이드 > 활용' 카테고리의 다른 글
[Android] Cloud Firestore와 Cloud Storage 사용하기 (0) | 2023.09.29 |
---|---|
[Android] 카카오 로그인 구현하기 (0) | 2023.09.22 |
[Android] 구글 지도 사용하기 (0) | 2023.09.14 |
[Android] 네이버 지도 사용하기 (0) | 2023.09.13 |
[Android] 앱 위젯 만들기 (0) | 2023.09.12 |