我找到了一些解决方案,但我真的不知道如何开始。
"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/