Android Retrofit 2.0自定义JSONObject Converter

如果在使用的过程中,不需要Gson以及其他转换器,只是单纯的返回 JSONObject,那这样怎么处理呢?

通过阅读源码发现,可以通过自定义转换器的方式操作:

import retrofit.Call
/*Retrofit 2.0*/

public interfase ApiService{
    @POST("/list")
    Call<JSONObject> loadRepo();
}

同步操作:

Call<JSONObject> call = service.loadRepo();
Repo repo = call.excute()

异步操作:

Call<JSONObject> call = service.loadRepo();
call.enqueue(new Callback<JSONObject>(){
    @Override
    public void onResponse(Response<JSONObject> response){
        //从response.body()中获取结果
    }
    @Override
    public void onFailure(Throwable t){

    }
});

这样就完了么?不。

  • 添加自定义Converter

地址:https://github.com/brokge/Retrofit2.0-JSONCoverter
选择相应版本添加到项目中。(Retrofit 2.0 -beta2和Retrofit 2.0-beta4 处理方式不同)

  • GsonConverterFactory.create(gson)换成 JsonConverterFactory.create()

完整代码如下:

private static Retrofit initRetrofit() {
        OkHttpClient httpClient = new OkHttpClient();
        if (BuildConfig.DEBUG) {
            HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
            logging.setLevel(HttpLoggingInterceptor.Level.BODY);
            httpClient = new OkHttpClient.Builder().addInterceptor(logging).build();
        }
        return new Retrofit.Builder()
                .baseUrl(BaseUtil.getApiUrl())
                .addConverterFactory(JsonConverterFactory.create())
                .client(httpClient)
                .build();
    }

或许下面文章你也感兴趣:
Android Retrofit 请求字符串(非JSON数据)

你可能感兴趣的:(android)