/ / Retrofit / Gsonタイプアダプターを動的に作成する方法-kotlin、gson、retrofit2

Retrofit / Gsonタイプアダプタを動的に作成する方法 - kotlin、gson、retrofit2

1つの例から学んだので、これが最適な方法であるかどうかはわかりませんが、とにかく、次のコードを使用します。 Retrofitインスタンスを1つ作成し、すべてのリクエストに使用します。

多くの方法があるため、多くのデータの種類。アノテーションを追加するだけで、自動的にアダプタ(json-> my data class)を作成できるようです。しかし、さらに制御が必要(継承:データクラスには共有フィールドがあり、依存関係:一部のフィールドは他のフィールドの値によっては存在しない場合があります)ので、クラスごとにカスタムアダプターを作成しました。この:

if (instance == null)
{
val gson = GsonBuilder()
.registerTypeAdapter(myClass1::class.java, myClassDeserialiser1())
.... (tens of this) ....
.registerTypeAdapter(myClass30::class.java, myClassDeserialiser30())
.create()
instance = Retrofit.Builder().
.addConverterFactory(GsonConverterFactory.create(gson))
.build()
.create(MyAPIs::class.java);
}
return instance

上記の問題は、すべてのパーサーのインスタンスを事前に同時に作成していることです。これは非効率的かもしれません。それらが最初に必要になったときに作成できるといいのですが。それは可能ですか?

回答:

回答№1は0

あなたは @JsonAdapter 呼び出しの代わりにクラス定義への注釈 registerTypeAdapter。その効率性についてコメントすることはできませんが、アダプタ情報を作成する代わりに、オブジェクトに関連付けられたアダプタ情報を保持します Gson あなたが望むもののように聞こえるオブジェクト。