数年で一気に変わってます、JSONの取り扱い処理。
Kotlin 内蔵の serialization を使うのが良いでしょう。
👉 Kotlin/kotlinx.serialization: Kotlin multiplatform / multi-format serialization 
@Provides
@Singleton
fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
  val contentType = "application/json".toMediaType()
  val json = Json { 
    ignoreUnknownKeys = true
    isLenient = true
  } // *
  return Retrofit.Builder()
    .client(okHttpClient)
    .baseUrl(BASE_URL)
    .addConverterFactory(json.asConverterFactory(contentType))
    .build()
}
処理時に便利に設定を変えられるようになっているので、
よくあるやつを並べておきます。

👉 【仮想通貨】Cryptowatch Public Market REST API を眺める 
ignoreUnknownKeys = true
デフォルトでは、逆シリアル化中に不明なキーが検出されるとエラーが発生します。 これを回避し、ignoreUnknownKeysプロパティをtrueに設定することで、このようなキーを無視できます。
👉 kotlinx.serialization/json.md at master · Kotlin/kotlinx.serialization 
公開されている WEB-API には不要なデータがたくさんあります。
それを無視するための設定です。
isLenient = true
デフォルトでは、JsonパーサーはさまざまなJSON制限を強制して、可能な限り仕様に準拠します(RFC-4627を参照)。 特に、キーは引用符で囲まれている必要があり、リテラルは引用符で囲まれていない必要があります。 これらの制限は、isLenientプロパティを使用して緩和できます。 isLenient = trueを使用すると、非常に自由にフォーマットされたデータを解析できます。
私はどうしても必要なときにしか使いません。
RFCに基づかないJSONは一応留意しておきたいので。
👉 kotlinx.serialization/json.md at master · Kotlin/kotlinx.serialization 
👉 RFC 4627 - The application/json Media Type for JavaScript Object Notation (JSON) 
まとめ
一度、テンプレート化しておくと、当分使い回すことができます。
調べるときに、いろいろ古い情報が多くて時間かかったので、メモとして。
👉 【Retorofit】コピペで使える NetworkModule【Dagger Hilt】 
👉 Kotlin/kotlinx.serialization: Kotlin multiplatform / multi-format serialization 
【Retorofit】コピペで使える NetworkModule【Dagger Hilt】 https://t.co/zf9cpgxhP8 #android #kotlin #hilt #プログラミング
— chanzmao (@maochanz) June 2, 2022
 




