moshi には Kotlin Support 機能があり、別途 moshi-kotlin を追加して、
implementation 'com.squareup.moshi:moshi-kotlin:1.5.0'
KotlinJsonAdapterFactory を MoshiBuilder に add します。
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
また、moshi には Custom Type Adapters 機能があり、JSON の値とオブジェクトとの変換をカスタマイズすることができます。
この CustomAdapter および、CustomAdapter の Factory は KotlinJsonAdapterFactory より先に add しなければいけません (Kotlin Support のところに書いてあるのに気づかずはまってしまった...)。
Retrofit.Builder()
.addConverterFactory(MoshiConverterFactory.create(
Moshi.Builder()
.add(MyCustomAdapter()) // KotlinJsonAdapterFactory より先なので OK
.add(KotlinJsonAdapterFactory())
.build()))
...
Adapter を生成するときに、追加された順番で Factory に Adapter が生成できるか問い合わせていくため、KotlinJsonAdapterFactory を先にすると CustomAdapter に来ないので気をつけましょう。
0 件のコメント:
コメントを投稿