android - Retrofit - 如何将 Response 转换为 HashMap?

标签 android hashmap gson retrofit

我对使用 Square 的 Retrofit 进行 Android 开发有疑问。 假设我有一个 Response 对象,它实际上是一个 HashMap<String, String>对象。

有没有办法得到 HashMap来自这个 Retrofit 对象的对象?

谢谢!

最佳答案

Response对象包含有关从服务器返回的响应的各种信息。

如果你的意思是响应体是HashMap您可以在 success() 时解析正文被调用,或在构建 RestAdapter 时注册类型适配器并编写将解析和填充 HashMap 的反序列化程序.

 private RestAdapter getRestAdapter(){
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.registerTypeAdapter(new TypeToken<HashMap<String, String>>(){}.getType(), new MyHashMapDeserializer());
        RestAdapter.Builder builder = new RestAdapter.Builder();
        builder.setClient(new OkClient());
        builder.setLogLevel(RestAdapter.LogLevel.FULL);
        builder.setExecutors(Executors.newCachedThreadPool(), new MainThreadExecutor());
        builder.setConverter(new GsonConverter(gsonBuilder.create()));
        builder.setEndpoint(API_END_POINT_URL);
        return builder.build();
    }

然后创建将implements JsonDeserializer<HashMap<String, String>> 的新类(或内部类)并实现您的反序列化逻辑。

确保你适应K,V类型满足您的需求。

关于android - Retrofit - 如何将 Response 转换为 HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26351609/

相关文章:

java - 通过名称和 JTextComponent 获取组件

java - Gson 和 SharedPreferences 导致 NullPointerException

java - 如何使用 GSON 反序列化 PHP 数组

android - 如何在 Android 中获取位置及其温度?

java - Map keys : Enum. valueOf(~) vs String.hashCode() 最快的是什么?

java - 需要使用集合按名称和十六进制值对颜色进行排序

android - Kotlin 字段覆盖和 GSON 反序列化 Unable to create converter class 异常

android - Glide 显示错误 : Failed to find GeneratedAppGlideModule

android - 如何从android中的线程类启动一个 Activity ?

android - 在 Android 中动态更改 MenuItem?