как передать в модель объект размером json - retrofit2 - PullRequest
0 голосов
/ 01 августа 2020

Мой ответ моего сервера такой:

{
"succ":true,
"result":[..]
}

Я просто передаю содержимое моего result моей модели. Я не делаю отдельную модель для вышеуказанного ответа.

например:

@FormUrlEncoded
@POST("/category")
Call<List<CategoryPeramoonModel>> Category(@Field("id") String Title);


    Call<List<CategoryPeramoonModel>> call = ((App)getApplication()).getApiService().Category("0");
    call.enqueue(new Callback<List<CategoryPeramoonModel>>() {

        @Override
        public void onResponse(Call<List<CategoryPeramoonModel>> call, Response<List<CategoryPeramoonModel>> response) {

            Log.e("size",""+response.body().size());
            adapter.addItems(response.body());

        }

        @Override
        public void onFailure(Call<List<CategoryPeramoonModel>> call, Throwable t) {
            Log.e("error sliders",t.getMessage());
        }
    });

CategoryPeramoonModel is a model of result's content. but I got an error message.

Попытка вызвать метод интерфейса int java .util.List.size ( ) 'для ссылки на нулевой объект

1 Ответ

0 голосов
/ 01 августа 2020

Я думаю, проблема здесь в том, что вы ожидаете List<CategoryPeramoonModel>, но ваш API фактически возвращает объект. Чтобы исправить это, вам нужно создать модель для ответа, как показано ниже.

class MyResponse(
   val succ: Boolean,
   val result: List<CategoryPeramoonModel>
)

, а затем ваш API интерфейс должен выглядеть так

Call<MyResponse> Category(@Field("id") String Title);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...