Retrofit --> Java.lang.illegalstateexception: Expected Begin_array But Was Begin_object At Line 1 Column 2 Path $
None of the posts i found have helped me understand what im supposed to do. Stuck on this for quite a while so asking here. I want the List of IN and OUT names as 'in' and 'out' ar
Solution 1:
Right way to parse your server response
Change your interface
@GET("/")
Call<Example> getInUsers();
Change call
Call<Example> call1 = api.getInUsers();
    call1.enqueue(new Callback<Example>() {
        @Overridepublic void onResponse(Call<Example> call1, Response<Example> response) {
            List<In> inUsers = response.body().getPlanData().getVotesData().getVotes().getIn();
            ...your other  code here...Solution 2:
you have to do like below.
publicinterfaceAPIInterface {
@GET("/")
Call<Example> getInUsers();
    @GET("/")
    Call<List<Out>> getOutUsers();
}
Your activity like below.
Call<Example> call1 = api.getInUsers();
    call1.enqueue(newCallback<Example>() {
        @OverridepublicvoidonResponse(Call<Example> call1, Response<Example> response) {
            List<In> inUsers = response. getPlanData(). getVotesData().getVotes().getIn();
            Log.v("InUsers",String.valueOf(inUsers));
            data.add(newVote(Vote.HEADER_TYPE,"IN"));
            mAdapter.notifyDataSetChanged();
            for(In vote : inUsers) {
                data.add(newVote(Vote.ITEM_TYPE,String.valueOf(vote)));
            }
        }
        @OverridepublicvoidonFailure(Call<Example> call1, Throwable t) {
            Toast.makeText(getActivity().getApplicationContext(), t.getMessage() + "IN LIST", Toast.LENGTH_LONG).show();
        }
    });
Solution 3:
You are trying to get Json Array from response but the rsponse contains JsonObject
Solution 4:
The API doesn't return a List<In> or List<Out>. Instead, it returns an Example object. So instead of
public interface APIInterface {
@GET("/")
Call<List<In>> getInUsers();
    @GET("/")
    Call<List<Out>> getOutUsers();
}
you should use
publicinterfaceAPIInterface {
    @GET("/")
    Call<Example> getUsers();
}
So your call should look like this:
Call<Example> call = api.getInUsers();
call.enqueue(new Callback<Example>() {
    @Overridepublic void onResponse(Call<Example> call1, Response<Example> response) {
        // ... whatever you want to do with that data.// E.g. you can access inUsers via response.body().getPlanData().getVotesData().getVotes().getIn();
    }
    // ...
});
Post a Comment for "Retrofit --> Java.lang.illegalstateexception: Expected Begin_array But Was Begin_object At Line 1 Column 2 Path $"