with the next problem, when trying to consume a webservice, then message and presentation;
Expected BEGIN_ARRAY but was BEGIN_OBJECT
I'm not sure how to make a scenario, I've already got data from a webservice, but when it's not a simple array.
I have tried many alternatives, but without success.
response api
  {
    "_links": {
        "self": {
            "href": "http://url.com/service?page=1"
        },
        "first": {
            "href": "http://url.com/service"
        },
        "last": {
            "href": "http://url.com/service?page=1"
        }
    },
    "_embedded": {
        "data": [
            {
                "id": 1,
                "nome": "teste",
                "_links": {
                    "self": {
                        "href": "http://url.com/service/1"
                    }
                }
            },
            {
                "id": 2,
                "nome": "teste 2",
                "_links": {
                    "self": {
                        "href": "http://url.com/service/2"
                    }
                }
            }
        ]
    },
    "page_count": 1,
    "page_size": 25,
    "total_items": 2,
    "page": 1
}
Client
public class ApiClient {
    private static final String BASE_URL = "http://url.com/";
    private static Retrofit getClient() {
        HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
        interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder().addInterceptor(interceptor).build();
        Gson gson = new GsonBuilder().setLenient().create();
        return new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();
    }
    /**
     * Get API Service
     *
     * @return API Service
     */
    public static ApiInterface getApiService() {
        return getClient().create(ApiInterface.class);
    }
}
Interface
/**
 * Class ApiInterface
 */
public interface ApiInterface
{
    @Headers("Accept: application/json")
    @GET("/service")
    Call<ArrayList<ServiceData>> getData();
}
Service
public class Service{
    @SerializedName("data")
    private ArrayList<ServiceData> service = new ArrayList<>();
}
Service Data
public class ServiceData {
    @SerializedName("id")
    private int id;
    public ServiceData(int id, String nome) {
        this.id = id;
    }
    public int getId() {
        return id;
    }
}
Activity
 final Call<ArrayList<ServiceData>> service = apiService.getService();
        service.enqueue(new Callback<ArrayList<ServiceData>>() {
            @Override
            public void onResponse(Call<ArrayList<ServiceData>> call, Response<ArrayList<ServiceData>> response) {
                Log.e(TAG, "" + response.body());
            }
            @Override
            public void onFailure(Call<ArrayList<ServiceData>> call, Throwable t) {
                Log.e(TAG, "" + t);
            }
        });
 
     
     
     
    