Дооснащение нет данных

#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. Я изменил свой ответ, чтобы дать вам представление о том, как это может выглядеть. У меня нет времени разбирать вашу конкретную иерархию, но следуйте идее, и вы должны туда попасть