首页 > 解决方案 > 如何将json对象传递给模型-retrofit2

问题描述

我的服务器的响应是这样的:

{
"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()”

标签: javaandroidretrofit2

解决方案


我认为这里的问题是您期望List<CategoryPeramoonModel>但您API实际上返回了一个对象。要解决此问题,您需要为响应创建一个模型,如下所示。

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

然后你的API界面应该是这样的

Call<MyResponse> Category(@Field("id") String Title);

推荐阅读