我对使用Square的Retrofit进行
Android开发有疑问.
假设我有一个Response对象,它实际上是一个HashMap< String,String>宾语.
有没有办法从这个Retrofit对象中获取HashMap对象?
谢谢!
最佳答案 响应对象包含有关从服务器返回的响应的各种信息.
如果您的意思是响应主体是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();
}
然后创建将实现JsonDeserializer的新类(或内部类)< HashMap< String,String>>并实现您的反序列化逻辑.
确保您根据需要调整K,V类型.