gpt4 book ai didi

java - Android Studio 的 Retrofit2 : Cant get the array of petrol-stations

转载 作者:行者123 更新时间:2023-12-01 17:56:18 26 4
gpt4 key购买 nike

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());
}
});
}

}

Tanktstellen.java

package com.example.benzinpreise;

import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

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

public class Tankstellen {

private boolean ok;
private String license;
private String data;
private String status;
@SerializedName("stations")
public List <Stations> stationsList = null;

public class Stations{
@SerializedName("id")
public String id;
public String name;
public String brand;
public String street;
public String place;
public double lat;
public double lng;
public double dist;
public double diesel;
public double e5;
public double e10;
public boolean isOpen;
public String houseNumber;
public int postCode;


}


public boolean isOk() {
return ok;
}

public String getLicense() {
return license;
}

public String getData() {
return data;
}

public String getStatus() {
return status;
}

}

TankstellenAPI.java:

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

该数组没有通过 for 循环进行迭代来显示加油站数组。我不知道为什么。谁能帮我解决这个问题吗?

最佳答案

我克隆了你的代码并运行。错误出现在您的回复中。

Antwort.stationslist.size = 0

这就是为什么它不通过 for 循环进行迭代来显示加油站数组。

关于java - Android Studio 的 Retrofit2 : Cant get the array of petrol-stations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60710680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com