Разобрать файл JSON только с root - Android - PullRequest
0 голосов
/ 13 марта 2020

Мне нужно проанализировать JSON из базы данных Mov ie, также структурированной:

    [
  {
    "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;
}

Проблема в том, что я не получаю никакого ответа , Моя модель верна?

1 Ответ

1 голос
/ 13 марта 2020

Ваша служба API возвращает плоский список LanguageModel. Модернизация может справиться с этим для вас, все, что вам нужно сделать, это изменить определение конечной точки с

@GET("configuration/countries")
Call<LanguageModel> getLanguages(
        @Query("api_key") String apiKey);

на

@GET("configuration/countries")
Call<List<LanguageModel>> getLanguages(
        @Query("api_key") String apiKey);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...