相关疑难解决方法(0)

多态性如何与Gson(Retrofit)协同工作

这是我的Retrofit实例:

@Provides
@Singleton
ApiManager provideApiManager() {
    RxJava2CallAdapterFactory rxAdapter = RxJava2CallAdapterFactory.create();

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .addNetworkInterceptor(new StethoInterceptor())
            .build();

    Gson gson = new GsonBuilder().create();
    GsonConverterFactory converterFactory = GsonConverterFactory.create(gson);

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(AppConstants.BASE_URL)
            .addConverterFactory(converterFactory)
            .addCallAdapterFactory(rxAdapter)
            .client(okHttpClient)
            .build();
    return retrofit.create(ApiManager.class);
}
Run Code Online (Sandbox Code Playgroud)

模型:

class AbstractMessage {
    String id;
}

class TextMessage extends AbstractMessage {
    String textMessage;
}

class ImageMessage extends AbstractMessage {
    String url;
    String text;
}
Run Code Online (Sandbox Code Playgroud)

请求:

@GET("direct/messages")
Observable<List<AbstractMessage>> getMessages(@Header("Authorization") String authHeader, @Body RequestObject request);   
Run Code Online (Sandbox Code Playgroud)

执行请求:

apiManager.getMessages(authHeader, requestObject)
    .subscribeOn(Schedulers.io()) …
Run Code Online (Sandbox Code Playgroud)

java android json gson retrofit

19
推荐指数
1
解决办法
2005
查看次数

标签 统计

android ×1

gson ×1

java ×1

json ×1

retrofit ×1