Expected BEGIN_ARRAY but was BEGIN_OBJECT retrofit2

寵の児 提交于 2019-11-29 12:17:05
  @GET("photos")
Call<Model> savePhoto();

And Call your retrofit method like this >>>

 Call<Model> call = apiService.savePhoto();

        call.enqueue(new retrofit2.Callback<Model>() {
            @Override
            public void onResponse(Call<Model> call, retrofit2.Response<Model> response) {
                int statusCode = response.code();
                try {
                    Model model;
                   // Log.w("resedatasync", new Gson().toJson(response));
                    model= response.body();

And Create Your Model Class like this

public class Model{

@SerializedName("ArrayName")
 public List<DataBean > arraylist= new ArrayList<>();

@SerializedName("message")
private String message;

public class DataBean {

    @SerializedName("id")
     private String id;

    @SerializedName("typename")
     private String typename;

    @SerializedName("typename")
    public void settypename(String typename) {
        this.typename= typename;
    }

}

}

When you have problem

java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 44 path $.data

We must know that where need JSONArray .You have List<DataBean> data .So your data must use JSONArray .

And may be your problem at

Log.d("ddd", "onResponse: " + response.body().getData().size());

You can do like this .

System.out.println(response.body().string());

And show your message .

And try this class .

public class MessageFastModel {
    private boolean result;
    private String message;

    private DataBean data;

    public boolean isResult() {
        return result;
    }

    public void setResult(boolean result) {
        this.result = result;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public DataBean getData() {
        return data;
    }

    public void setData(DataBean data) {
        this.data = data;
    }

    public static class DataBean {
        private String id;
        private String type_name;

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getType_name() {
            return type_name;
        }

        public void setType_name(String type_name) {
            this.type_name = type_name;
        }
    }
}

And remove Log.d("ddd", "onResponse: " + response.body().getData().size());

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!