android - 使用 Retrofit v2.0.0-beta1 转换为 JSONObject/JSONArray

标签 android json gson retrofit

我目前正在升级到 Retrofit v.2.0.0-beta1 和 the docs它说:

By default, Retrofit can only deserialize HTTP bodies into OkHttp's ResponseBody type and it can only accept its RequestBody type for @Body.

Converters can be added to support other types. Six sibling modules adapt popular serialization libraries for your convenience.

我到底如何添加 GSON 转换器而不是 RequestBody我收到GSON.JsonObjectGSON.JsonArray对于 Content-type: application/json 的回复?

我的初始化代码如下所示:

OkHttpClient client = new OkHttpClient();

client.interceptors().add(new AuthInterceptor(authState));
client.interceptors().add(new LoggingInterceptor());

restClient = new Retrofit.Builder()
        .client(client)
        .baseUrl(BASE_URL)
        .build()
        .create(RestClient.class);

最佳答案

自Retrofit2以来,它不会附带默认转换器,因此您需要显式添加转换器。

你可以这样添加。

Retrofit retrofit = new Retrofit.Builder()
            .client(client)
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

您可以通过以下任一方式获取映射对象

Call<MyObject> call = myService.callMyService();
Response<MyObject> response = call.execute();
MyObject mappedObj = response.body();

Call<MyObject> call = myService.callMyService();
call.enqueue(new Callback<MyObject>() {
    @Override void onResponse(Response response) {
        MyObject mappedObj = response.body();
    }

    @Override void failure(Throwable throwable) {}
});

同时添加依赖项 编译'com.squareup.retrofit:converter-gson:2.0.0-beta1'

引用:https://speakerdeck.com/jakewharton/simple-http-with-retrofit-2-droidcon-nyc-2015

关于android - 使用 Retrofit v2.0.0-beta1 转换为 JSONObject/JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32336785/

相关文章:

ruby-on-rails - 为什么 rails 无法识别请求 header 中的 `Accept: application/json`?

javascript - select2 4.0 AJAX 预填充方法?

gson - 如何解析带有Gson注释的动态列表?

java - 如何使用 Gson 仅从 Json 反序列化某些特定字段?

android - 检查 Espresso 是否显示对话框

android - react-native log-android adb 调用失败

android - Android 上的 OpenGL

android - 协程作业返回值

json - postgreSQL 如果不存在则添加带有值的新键,如果存在则对其进行编辑

java - 为什么 Kotlin 接受声明为不可为空字符串的属性中的 null 值?