Просматривая ваши комментарии, я предполагаю, что ваш класс POJO правильный, но то, как вы используете его с вызовом Retrofit, неверно.Убедитесь, что класс POJO, как показано ниже,
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Foo {
@SerializedName("positive")
@Expose
private List<String> positive = null;
@SerializedName("medical")
@Expose
private List<String> medical = null;
public List<String> getPositive() {
return positive;
}
public List<String> getMedical() {
return medical;
}
}
И используйте выше класс POJO, как это.
Ваш интерфейс API
import retrofit2.Call;
import retrofit2.http.GET;
public interface FooApiInterface {
/* pass POJO class to Call<> */
@GET("request/url")
Call<Foo> getFoo(/* parameters for the request if there any */);
/* other api calls here */
}
Следующий интерфейс API использования
FooApiInterface client = ...; // initialization
Call<Foo> fooCall = client.getFoo();
fooCall.enqueue(
new Callback<Foo>() {
@Override
public void onResponse(@NonNull Call<Foo> call, @NonNull Response<Foo> response) {
if (response.isSuccessful()) {
List<String> positiveList = response.body().getPositive();
List<String> medicalList = response.body().getMedical();
}
}
@Override
public void onFailure(@NonNull Call<Foo> call, @NonNull Throwable t) {
Log.e("error", "API Error ", t);
}
}
);
Обратите внимание, что здесь я использую Foo
класс POJO в качестве параметра для Call
вместо List<Strain>
(как используется в вашем коде).Если вы измените код, как указано выше, вы можете избавиться от ошибки
java.lang.IllegalStateException: ожидаемый BEGIN_ARRAY, но был BEGIN_OBJECT в строке 1, путь 2, столбец 2 $ error
Для демонстрации я использовал пример Foo
.Измените его в соответствии с вашими требованиями.