我对使用 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/