#java #android #api #retrofit
Вопрос:
Я пытаюсь получить данные из этого api с помощью модернизации в Android studio. https://services5.arcgis.com/fsYDFeRKu1hELJJs/arcgis/rest/services/FOHM_Covid_19_FME_1/FeatureServer/4/query?f=geojsonamp;where=1=1amp;outFields=Åldersgruppamp;outFields=Totalt_antal_fallamp;outFields=Totalt_antal_avlidna
Данные, которые я получаю, либо равны нулю, либо 0, и я не понимаю, почему.
Это мой интерфейс:
public interface apiCall {
@GET("4/query?f=geojsonamp;where=1=1amp;outFields=Åldersgrupp2amp;outFields=Totalt_antal_fallamp;outFields=Totalt_antal_avlidnaamp;outFields=Totalt_antal_intensivvårdade")
Call<apiData> getData();
}
Это моя модель
@SerializedName("Totalt_antal_avlidna")
private int death;
@SerializedName("Totalt_antal_fall")
private int cases;
@SerializedName("Totalt_antal_intensivvårdade")
private int hospital;
@SerializedName("Åldersgrupp")
private String ageGroup;
public int getDeath() {
return death;
}
public int getCases() {
return cases;
}
public int getHospital() {
return hospital;
}
public String getAgeGroup() {
return ageGroup;
}
Это и есть код:
//retrofit builder
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://services5.arcgis.com/fsYDFeRKu1hELJJs/arcgis/rest/services/FOHM_Covid_19_FME_1/FeatureServer/")
.addConverterFactory(GsonConverterFactory.create())
.build();
//interface
apiCall callApi = retrofit.create(apiCall.class);
Call<apiData> call = callApi.getData();
call.enqueue(new Callback<apiData>() {
@Override
public void onResponse(Call<apiData> call, Response<apiData> response) {
if(!response.isSuccessful()){
test.setText("code " response.code());
return;
}
apiData trying = response.body();
String content = "";
content = "age group: " trying.getAgeGroup() "n";
content = "cases: " trying.getCases() "n";
content = "death: " trying.getDeath() "n";
content = "hospital: " trying.getHospital() "nn";
test.append(content);
}
@Override
public void onFailure(Call<apiData> call, Throwable t) {
test.setText(t.getMessage());
}
});
Комментарии:
1. пожалуйста, не публикуйте свой код в виде изображений, добавьте его в виде текста здесь
Ответ №1:
Вам нужно проанализировать «Коллекцию функций», затем «Функции», затем фактическую функцию.
Таким образом, структура ваших классов неправильна
Исправьте иерархию объектов, и вы ее решите
//это просто псевдокод ниже, но он должен указывать вам в правильном направлении:
@SerializedName("FeatureCollection")
class FeatureCollection{
@SerializedName("Features")
ArrayList<Feature> features;
}
class Feature{
@SerializedName("Totalt_antal_intensivvårdade")
int hospital;
@SerializedName("Åldersgrupp")
String ageGroup;
}
Комментарии:
1. Хорошо, спасибо за ответ, не могли бы вы показать пример, потому что я действительно не знаю, как это сделать.
2. Я изменил свой ответ, чтобы дать вам представление о том, как это может выглядеть. У меня нет времени разбирать вашу конкретную иерархию, но следуйте идее, и вы должны туда попасть