java - 应为 BEGIN_ARRAY,但在第 1 行第 2 列路径$处为 BEGIN_OBJECT

标签 java android

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

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

这是我的代码。

界面

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

主要 Activity

    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();
        }
    });

最佳答案

根据您收到的回复,您将需要 2 个不同的类(class)。

class CustomResponse{
  private List<Delivery> Result;

  // getters and setters and constructors
}

class Delivery {
  // your current default class
}

您的界面更改为

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

当前的项目无法正常工作,因为它需要一个交付项目列表作为响应,但却得到了一个名为 result 的对象作为第一个项目,即, 你的回复看起来像这样:

{
  result:....
}

预计

[.....]

如果您不想创建 2 个类,那么您需要修改响应,使其仅发回列表,而不发送结果:

关于java - 应为 BEGIN_ARRAY,但在第 1 行第 2 列路径$处为 BEGIN_OBJECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48605857/

相关文章:

java - 为什么将方法作为 getOrDefault 的参数,该方法无论如何都会被调用?

java - 如何解析嵌套在 json 数组中的 json 对象

java - socket.io 和 okhttp3 冲突

java - 我如何从文本时钟中获取值

javascript - 如何在 Opera Mobile、iOS、Android 等中使页面宽度等于屏幕宽度

java - 使位图大小和位置在每个设备上都相同

java - 打印Jpanel数据时出现问题

java - 可以在Windows和Linux环境下开发的Web框架

Android 设备通过配对的蓝牙设备唤醒

Java版本控制