我对使用Square的Retrofit进行Android开发有疑问。
我们假设我有一个Response对象,它实际上是一个HashMap<String, String>
对象。
有没有办法从这个Retrofit对象中获取HashMap
对象?
谢谢!
答案 0 :(得分:2)
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
类型。
答案 1 :(得分:0)
@Jake Wharton说: Gson会在不进行任何配置的情况下反序列化Map。因此,您实际上不必执行任何操作。
只需指定Map
作为翻新返回类型或回调类型。