我有一个关于使用Retrofit by Square进行Android开发的问题。假设我有一个Response对象,它实际上是一个HashMap<String, String>对象。是否有方法从该Retrofit对象获取HashMap对象?谢谢你!
HashMap<String, String>
HashMap
wydwbb8l1#
Response对象包含有关从服务器返回的响应的各种信息。如果您的意思是响应主体是HashMap,则可以在调用success()时解析主体,或者在构建RestAdapter时注册类型适配器,并编写将解析和填充HashMap的反序列化器。
Response
success()
RestAdapter
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类型。
implements JsonDeserializer<HashMap<String, String>>
K,V
2guxujil2#
@杰克·沃顿说:Gson将在没有任何配置的情况下反序列化一个Map。所以你真的不需要做任何这方面的工作。只需指定Map作为Retrofit返回类型或Callback类型。
Map
2条答案
按热度按时间wydwbb8l1#
Response
对象包含有关从服务器返回的响应的各种信息。如果您的意思是响应主体是
HashMap
,则可以在调用success()
时解析主体,或者在构建RestAdapter
时注册类型适配器,并编写将解析和填充HashMap
的反序列化器。然后创建新的类(或内部类),它将
implements JsonDeserializer<HashMap<String, String>>
并实现反序列化逻辑。请确保根据您的需要调整
K,V
类型。2guxujil2#
@杰克·沃顿说:Gson将在没有任何配置的情况下反序列化一个Map。所以你真的不需要做任何这方面的工作。
只需指定
Map
作为Retrofit返回类型或Callback类型。