Kotlin: Gson에서 Moshi로 마이그레이션

5677 단어 Kotlin

Kotlin: Gson에서 Moshi로 마이그레이션


Gradle 설정


app/build.gradle

// network
def retrofitVersion = '2.3.0'
implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"

// コメントアウト
//implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"

// 追加
implementation "com.squareup.retrofit2:converter-moshi:$retrofitVersion"

// 追加
def moshi_version = '1.5.0'
implementation "com.squareup.moshi:moshi:$moshi_version"
implementation "com.squareup.moshi:moshi-kotlin:$moshi_version"

구성 모듈


ClientModule

@Module
class ClientModule {

// コメントアウト
//@Provides
//@Singleton
//fun provideGson(): Gson = GsonBuilder()
//    .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
//    .create()

  @Provides
  @Singleton
  fun provideMoshi() = Moshi.Builder()
      .add(KotlinJsonAdapterFactory())
      .build()

// コメントアウト
//@Provides
//@Singleton
//fun provideRetrofit(gson: Gson): Retrofit = Retrofit.Builder()
//    .baseUrl("http://hoge.com")
//    .addConverterFactory(GsonConverterFactory.create(gson))
//    .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
//    .build()

  // 追加
  @Provides
  @Singleton
  fun provideRetrofit(moshi: Moshi): Retrofit = Retrofit.Builder()
      .baseUrl("http://hoge.com")
      .addConverterFactory(MoshiConverterFactory.create(moshi))
      .addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
      .build()

  @Provides
  @Singleton
  fun provideArticleClient(retrofit: Retrofit): DiaryApi = retrofit.create(DiaryApi::class.java)
}

이렇게 하면 돼요.


참고로 Json을 투시할 때 스네크 상자를 카멜로 바꾸는 방법
Diaries
data class Diaries(
    // コメントアウト
    // @SerializedName("next_offset")
    @Json(name = "next_offset")
    val nextOffset: Int,
    val items: List<Diary>
)

좋은 웹페이지 즐겨찾기