У меня проблема с Json
, когда я использую Gson, все работает правильно, но когда я использую retrofit2, что-то идет не так.
Структура класса точно такая же между модернизацией и gson.Разница заключается в одном дополнительном интерфейсе и кодах модификации, которые работают в разных случаях. Я загрузил здесь каждый фрагмент кода.
String json2 = "{\"busList\":{\"bus\":[{\"forward\":\"true\",\"lat\": \"41.718979\",\"lon\": \"44.770645\",\"nextStopId\": \"1858\",\"routeNumber\": \"42\"},{\"forward\": \"true\",\"lat\": \"41.71735\",\"lon\": \"44.777855\",\"nextStopId\": \"924\",\"routeNumber\": \"42\" }]}}";
//project structure
//Class1
public class FatherBusList {
@SerializedName("busList")
private BusList busList;
public FatherBusList(BusList busList){
this.busList = busList;
}
public BusList getBusList() {
return busList;
}
}
//Class2
public class BusList {
@SerializedName("bus")
private List<Bus> buses;
public BusList (List<Bus> busses){
this.buses = busses;
}
public List<Bus> getBuses() {
return buses;
}
}
//Class3
public class Bus {
private String forward;
private String lat;
private String lon;
private String nextStopId;
private String routeNumber;
public Bus(String forward, String lat, String lon, String nextStopId, String routeNumber) {
this.forward = forward;
this.lat = lat;
this.lon = lon;
this.nextStopId = nextStopId;
this.routeNumber = routeNumber;
}
public String getForward() {
return forward;
}
public String getLat() {
return lat;
}
public String getLon() {
return lon;
}
public String getNextStopId() {
return nextStopId;
}
public String getRouteNumber() {
return routeNumber;
}
}
//retrofit2 code
//Interface for request
public interface TtcApi {
@GET("buses?routeNumber=37&forward=1&_dc=1556996108032")
Call<FatherBusList> getBus();
}
//MainActivivty
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://transit.ttc.com.ge/pts-portal-services/")
.addConverterFactory(GsonConverterFactory.create())
.build();
TtcApi ttcApi = retrofit.create(TtcApi.class);
Call<FatherBusList> call = ttcApi.getBus();
call.enqueue(new Callback<FatherBusList>() {
@Override
public void onResponse(Call<FatherBusList> call, Response<FatherBusList> response) {
if (!response.isSuccessful()) {
textView.setText("Code: " + response.code());
return;
}
Toast.makeText(MainActivity.this, "Successful", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<FatherBusList> call, Throwable t) {
textView.setText(t.getMessage());
}
});
}
}
Я ожидаю, что busList имеет 1 объект, а этот объект имеет arrayList
Но его вывод равен нулю.