Android 使用2处理对象数组响应

Android 使用2处理对象数组响应,android,retrofit2,Android,Retrofit2,冒着11次问这个问题的风险,我在处理POST请求的响应时遇到了问题。而且还没能让stackoverflow的任何一个例子起作用 我向后端发出一个简单的请求,返回一个json对象数组 我得到的错误是 应为BEGIN\u数组,但在第1行第2列路径$处为BEGIN\u对象。 这正是我正在做的 WebAPIService.class @Headers("Content-Type: application/json") @POST("pendingTransfers") Call<List<V

冒着11次问这个问题的风险,我在处理POST请求的响应时遇到了问题。而且还没能让stackoverflow的任何一个例子起作用

我向后端发出一个简单的请求,返回一个json对象数组

我得到的错误是

应为BEGIN\u数组,但在第1行第2列路径$处为BEGIN\u对象。

这正是我正在做的

WebAPIService.class

@Headers("Content-Type: application/json")
@POST("pendingTransfers")
Call<List<VehicleTransferData>> refreshVehicles(@Body VehicleTransferData msg);

您可以在VehicletTransferData类中发布代码吗

另外,JSON可能不是返回数组,而是返回一个对象。如果是这种情况,则改为:

 @Headers("Content-Type: application/json")
@POST("pendingTransfers")
Call<VehicleTransferData> refreshVehicles(@Body VehicleTransferData msg);
@Headers(“内容类型:application/json”)
@邮政(“待转帐”)
呼叫刷新车辆(@Body VehicletTransferData msg);
在活动中

call.enqueue(new Callback<VehicleTransferData>()
    {
        @Override
        public void onResponse(Call<VehicleTransferData> call, Response<VehicleTransferData> response) {

            Toast.makeText(RegisteredVehicles.this, response.body().get(0).getVehicleReg(),Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<VehicleTransferData> call, Throwable t) {
            Toast.makeText(RegisteredVehicles.this, t.getMessage(),Toast.LENGTH_LONG).show();
        }
    });
call.enqueue(新回调()
{
@凌驾
公共void onResponse(调用、响应){
Toast.makeText(RegisteredVehicles.this,response.body().get(0.getVehicleReg(),Toast.LENGTH_LONG.show();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(RegisteredVehicles.this,t.getMessage(),Toast.LENGTH_LONG.show();
}
});

如果这确实是来自服务器的响应,那么您需要创建一个如下所示的类:

class VehicleResponse{
    int ResponseCode;
    string ResponseMessage;
    string ApiVersion;
    List<VehicleTransferData> ResponsePackage;
}
class车辆响应{
国际响应码;
字符串响应消息;
字符串转换;
列出响应包;
}
API:

@Headers(“内容类型:application/json”)
@邮政(“待转帐”)
呼叫刷新车辆(@Body VehicletTransferData msg);
活动:

call.enqueue(new Callback<VehicleResponse>()
    {
        @Override
        public void onResponse(Call<VehicleResponse> call, Response<VehicleResponse> response) {

            Toast.makeText(RegisteredVehicles.this, response.body().get(0).getVehicleReg(),Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<VehicleResponse> call, Throwable t) {
            Toast.makeText(RegisteredVehicles.this, t.getMessage(),Toast.LENGTH_LONG).show();
        }
    });
call.enqueue(新回调()
{
@凌驾
公共void onResponse(调用、响应){
Toast.makeText(RegisteredVehicles.this,response.body().get(0.getVehicleReg(),Toast.LENGTH_LONG.show();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(RegisteredVehicles.this,t.getMessage(),Toast.LENGTH_LONG.show();
}
});

您是否可以附上您的回复?您的服务器可能返回json对象,该对象包含arrayseems。您的响应是一个对象而不是数组。添加到文章底部。我认为开始时的字段导致了问题!
class VehicleResponse{
    int ResponseCode;
    string ResponseMessage;
    string ApiVersion;
    List<VehicleTransferData> ResponsePackage;
}
@Headers("Content-Type: application/json")
@POST("pendingTransfers")
Call<VehicleResponse> refreshVehicles(@Body VehicleTransferData msg);
call.enqueue(new Callback<VehicleResponse>()
    {
        @Override
        public void onResponse(Call<VehicleResponse> call, Response<VehicleResponse> response) {

            Toast.makeText(RegisteredVehicles.this, response.body().get(0).getVehicleReg(),Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<VehicleResponse> call, Throwable t) {
            Toast.makeText(RegisteredVehicles.this, t.getMessage(),Toast.LENGTH_LONG).show();
        }
    });