我还需要从The Movie Database中解析一个JSON,其结构也是如此:
[
{
"iso_3166_1": "AD",
"english_name": "Andorra"
},
{
"iso_3166_1": "AE",
"english_name": "United Arab Emirates"
},
这是我的API服务:
@GET("configuration/countries")
Call<LanguageModel> getLanguages(
@Query("api_key") String apiKey);
我创建了此模型来检索数据:
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
public class LanguageModel implements Serializable {
@SerializedName("iso_3166_1")
private String id;
@SerializedName("english_name")
private String originalLanguage;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getOriginalLanguage() {
return originalLanguage;
}
public void setOriginalLanguage(String originalLanguage) {
this.originalLanguage = originalLanguage;
}
}
然后,我进行了此调用以将所有一对值都放入HashMap:
private HashMap<String, String> initializeMapLang() {
HashMap<String, String> tmp = new HashMap<>();
ApiService apiService = ApiBuilder.getClient(DetailActivity.this).create(ApiService.class);
Call<LanguageModel> call = apiService.getLanguages(BuildConfig.API_KEY);
call.enqueue(new Callback<LanguageModel>() {
@Override
public void onResponse(Call<LanguageModel> call, Response<LanguageModel> response) {
Pair<String, String> resultLang = new Pair<>(response.body().getId(), response.body().getOriginalLanguage());
tmp.put(resultLang.first, resultLang.second);
}
@Override
public void onFailure(Call<LanguageModel> call, Throwable t) { }
});
return tmp;
}
问题是我没有得到任何回应。我的模型正确吗?
您的api服务正在返回LanguageModel
的固定列表。改造可以为您解决这个问题,您所需要做的就是从[
@GET("configuration/countries")
Call<LanguageModel> getLanguages(
@Query("api_key") String apiKey);
to
@GET("configuration/countries")
Call<List<LanguageModel>> getLanguages(
@Query("api_key") String apiKey);