预期BEGIN_ARRAY但在第1行第2列路径$为BEGIN_OBJECT

时间:2018-02-04 07:38:48

标签: java android

我找到了一些解决方案,但我真的不知道如何开始。

"Result": [
        {
            "id": 487749,
            "deliveryid": 71472,
            "salestransactiondetailsid": 680089,

这是我的代码。

接口

@GET("api/Ontrack/Delivery")
Call<List<Delivery>> getDeliveryDetails();

MainActivity

    call.enqueue(new Callback<List<Delivery>>() {
        @Override
        public void onResponse(Call<List<Delivery>> call, Response<List<Delivery>> response) {
            List<Delivery> get_delivery_details = response.body();

            String[] deliveryId = new String[get_delivery_details.size()];

            for (int i = 0; i<get_delivery_details.size(); i++) {
                deliveryId [i] = get_delivery_details.get(i).getDeliveryid();
            }

            listView.setAdapter(
                    new ArrayAdapter<>(
                            getApplicationContext(),
                            android.R.layout.simple_list_item_1,
                            deliveryId
            )
            );
        }

        @Override
        public void onFailure(Call<List<Delivery>> call, Throwable t) {
            Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
        }
    });

1 个答案:

答案 0 :(得分:1)

根据您的回复,您将需要2个不同的课程。

class CustomResponse{
  private List<Delivery> Result;

  // getters and setters and constructors
}

class Delivery {
  // your current default class
}

您的界面变为

@GET("api/Ontrack/Delivery")
Call<CustomResponse> getDeliveryDetails();

当前的一个没有工作,因为它期望一个Delivery项列表作为响应,而是得到一个名为result的对象作为第一项,即, 你的回答看起来像这样:

{
  result:....
}

预计

[.....]

如果你不想创建2个类,那么你需要修改响应,这样它只发回不带Result:的列表。