N.K*_*K.T 6 android hashmap retrofit2
我试图使用改型2来获取json对象响应。我使用了hashmap,因为键是动态的。这是我的回应课:
public class Countries {
private Map<String, Model> datas;
public Map<String, Model> getDatas() {
return datas;
}
}
Run Code Online (Sandbox Code Playgroud)
而Model类是:
public class Model {
@SerializedName("country_name")
private String country_name;
@SerializedName("continent_name")
private String continent_name;
public String getCountry_name() {
return country_name;
}
public String getContinent_name() {
return continent_name;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经尝试处理如下响应:
call.enqueue(new Callback<Countries>() {
@Override
public void onResponse(Call<Countries> call, Response<Countries> response) {
Map<String, Model> map = new HashMap<String, Model>();
map = response.body().getDatas();
for (String keys: map.keySet()) {
// myCode;
}
}
@Override
public void onFailure(Call<Countries> call, Throwable t) {
}
});
Run Code Online (Sandbox Code Playgroud)
并发生此错误:
java.lang.NullPointerException:尝试在空对象引用上调用接口方法'java.util.Set java.util.Map.keySet()'
JSON响应如下所示:
{
"0": {
"country_name": "Argentina",
"continent_name": "South America"
},
"1": {
"country_name": "Germany",
"continent_name": "Europe"
}
}
Run Code Online (Sandbox Code Playgroud)
那么如何在HashMap中获得响应?
问题是您在Call<Countries>应该使用Call<Map<String, Model>>. 您的回复没有名为“datas”的字段;这只是一个简单的映射String到Model对象。
删除Countries该类并将网络代码中对它的所有引用替换为Map<String, Model>.
| 归档时间: |
|
| 查看次数: |
6054 次 |
| 最近记录: |