仅使用root解析JSON文件-Android

问题描述 投票:0回答:1

我还需要从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;
}

问题是我没有得到任何回应。我的模型正确吗?

android json parsing callback
1个回答
0
投票

您的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);
© www.soinside.com 2019 - 2024. All rights reserved.