Java 使用Android Studio改装2:无法获得加油站阵列

Java 使用Android Studio改装2:无法获得加油站阵列,java,android,json,gson,retrofit2,Java,Android,Json,Gson,Retrofit2,Api响应: { "ok": true, "license": "CC BY 4.0 - https:\/\/creativecommons.tankerkoenig.de", "data": "MTS-K", "status": "ok", "stations": [ { "id": "35885891-164a-4cc7-a6c9-3c6f7f4e6845", "name": "Andreas Linke", "brand":

Api响应:

{
  "ok": true,
  "license": "CC BY 4.0 -  https:\/\/creativecommons.tankerkoenig.de",
  "data": "MTS-K",
  "status": "ok",
  "stations": [
    {
      "id": "35885891-164a-4cc7-a6c9-3c6f7f4e6845",
      "name": "Andreas Linke",
      "brand": "Nordoel",
      "street": "Peiner Str.",
      "place": "Sehnde",
      "lat": 52.31519,
      "lng": 9.972986,
      "dist": 2.3,
      "diesel": 1.109,
      "e5": 1.279,
      "e10": 1.239,
      "isOpen": true,
      "houseNumber": "52",
      "postCode": 31319
    },
    {
      "id": "d4cb468e-86b0-4aa0-a862-5677d22cbab1",
      "name": "ACCESS Tankstelle Sehnde",
      "brand": "Access",
      "street": "LEHRTER STR. 20",
      "place": "SEHNDE",
      "lat": 52.317781,
      "lng": 9.966101,
      "dist": 2.8,
      "diesel": 1.109,
      "e5": 1.279,
      "e10": 1.249,
      "isOpen": true,
      "houseNumber": "",
      "postCode": 31319
    },
    {
      "id": "5bf0bee3-4dc0-4f6e-a846-cb0ac3ac2efc",
      "name": "Aral Tankstelle",
      "brand": "ARAL",
      "street": "Iltener Straße",
      "place": "Sehnde",
      "lat": 52.3173637,
      "lng": 9.959905,
      "dist": 3.2,
      "diesel": 1.139,
      "e5": 1.319,
      "e10": 1.289,
      "isOpen": true,
      "houseNumber": "8",
      "postCode": 31319
    },
    {
      "id": "096ac8b7-190d-4def-a860-6d2002f4b84e",
      "name": "M1 Lehrte",
      "brand": "M1",
      "street": "Everner Str.",
      "place": "Lehrte",
      "lat": 52.36773,
      "lng": 9.9967,
      "dist": 5.6,
      "diesel": 1.109,
      "e5": null,
      "e10": null,
      "isOpen": true,
      "houseNumber": "41",
      "postCode": 31275
    },
    {
      "id": "e1a15081-25ed-9107-e040-0b0a3dfe563c",
      "name": "Sehnde, Kirchstr. 17",
      "brand": "HEM",
      "street": "Kirchstr.",
      "place": "Sehnde",
      "lat": 52.34744,
      "lng": 9.928732,
      "dist": 6.2,
      "diesel": 1.109,
      "e5": 1.269,
      "e10": null,
      "isOpen": true,
      "houseNumber": "17",
      "postCode": 31319
    },
    {
      "id": "375a1dbb-4d61-4a4b-825a-3b2e3c0b82d8",
      "name": "Lehrte , Ahltener Straße 15",
      "brand": "bft",
      "street": "Ahltener Straße 15",
      "place": "Lehrte",
      "lat": 52.372474,
      "lng": 9.97253,
      "dist": 6.5,
      "diesel": 1.109,
      "e5": 1.309,
      "e10": 1.279,
      "isOpen": true,
      "houseNumber": "",
      "postCode": 31275
    },
    {
      "id": "45b00a42-93fa-41fe-9f9b-977b25a9832f",
      "name": "OIL! Tankstelle Lehrte",
      "brand": "OIL!",
      "street": "Mielestr. 20",
      "place": "Lehrte",
      "lat": 52.3804,
      "lng": 10.0061,
      "dist": 6.9,
      "diesel": 1.109,
      "e5": 1.279,
      "e10": 1.249,
      "isOpen": true,
      "houseNumber": "",
      "postCode": 31275
    }
  ]
}
MainActivity.java:

package com.example.benzinpreise;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.TextView;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonIOException;
import com.google.gson.JsonObject;

import java.util.ArrayList;
import java.util.List;

import javax.xml.transform.Result;

import retrofit2.*;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
    private TextView textViewResult;
    private List<Tankstellen> tankstellenList = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textViewResult =findViewById(R.id.text_view_result);
        getTankstellen();

    }

    private void getTankstellen(){
        Gson gson = new GsonBuilder()
                .setLenient()
                .create();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(TankstellenApi.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();

        TankstellenApi tankstellenApi = retrofit.create(TankstellenApi.class);
        Call<Tankstellen> call = tankstellenApi.getTankstellen("57.001","10.007","7","all","dist",TankstellenApi.API_KEY);
        call.enqueue(new Callback<Tankstellen>() {
            @Override
            public void onResponse(Call<Tankstellen> call, Response<Tankstellen> response) {

                    String displayResponse = "";
                    String displayStations ="";
                    Tankstellen antwort = response.body();
                    List<Tankstellen.Stations> tankstellenList = antwort.stationsList;

                    displayResponse += "ok: " +antwort.isOk() +"\n" + "license: "+antwort.getLicense() +"\n"+ "data: "+antwort.getData() +"\n"+ "status: "+antwort.getStatus() +"\n";

                    for(Tankstellen.Stations stationen : tankstellenList){
                        displayResponse += stationen.id + " "
                                + stationen.name + " "
                                + stationen.brand + " "
                                + stationen.street + " "
                                + stationen.place + " "
                                + stationen.lat + " "
                                + stationen.lng + " "
                                + stationen.dist + " "
                                + stationen.diesel + " "
                                + stationen.e5 + " "
                                + stationen.e10 + " "
                                + stationen.isOpen + " "
                                + stationen.houseNumber + " "
                                + stationen.postCode;
                    }
                    textViewResult.setText(displayResponse);


            }

            @Override
            public void onFailure(Call<Tankstellen> call, Throwable t) {
                textViewResult.setText(t.getMessage());
            }
        });
    }

}


数组没有通过for循环迭代以显示加油站数组。我不知道为什么。有人能帮我吗?

我克隆了你的代码并运行了。错误在您的响应中

Antwort.stationslist.size = 0
这就是为什么它没有通过for循环迭代来显示加油站阵列的原因

package com.example.benzinpreise;

import com.google.gson.JsonObject;

import java.util.List;

import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;

public interface TankstellenApi {

    String BASE_URL = "https://creativecommons.tankerkoenig.de/";
    String API_KEY = "50d25698-e799-22df-c47c-833b7ae62b8b";

    @GET("json/list.php")
    Call<Tankstellen> getTankstellen (@Query("lat") String lat,
                                     @Query("lng") String lng,
                                     @Query("rad") String umkreis,
                                     @Query("type") String type,
                                     @Query("sort") String filter,
                                     @Query("apikey") String apikey);

}
ok: true
license: CC BY 4.0 -  https:\/\/creativecommons.tankerkoenig.de
data: MTS-K
status: ok
Antwort.stationslist.size = 0