无法从android studio中的retrofit json响应中解析正确的值

问题描述 投票:0回答:0

我正在尝试通过改造 api 后调用从我的 mysql 数据库获取 orderid。实际数据通过

arrOrderStatus.toString()
以 json 格式传入,但我无法使用
arrOrderStatus.get(i).getOrderid()
提取准确的值。在打印步骤 3(如下图所示)之后和打印步骤 4 之前,应用程序崩溃了。

我在哪里犯了愚蠢的错误?

主 Activity 中调用 retofit api 的函数:

private void fetchingOrderStatusData(String mobilenumber) {
       Call<List<response_model_order_status>> call = apicontroller
               .getInstance()
               .getApi()
               .getOrderStatus(mobilenumber);

       call.enqueue(new Callback<List<response_model_order_status>>() {
           @Override
           public void onResponse(Call<List<response_model_order_status>> call, Response<List<response_model_order_status>> response) {
               Log.d("AAAAAAAA", "Service is running..." + mobilenumber + "--1--");
               List<response_model_order_status> arrOrderStatus = response.body();
               Log.d("AAAAAAAA", "Service is running..." + mobilenumber + arrOrderStatus.toString() + "--2--");
               for (int i = 0; i < arrOrderStatus.size(); i++) {
                   Log.d("AAAAAAAA", "Service is running..." + mobilenumber + "--3--");
                   Log.d("AAAAAAAA", "Service is running..." + arrOrderStatus.get(i).getOrderid() + "--4--");
               }
           }

           @Override
           public void onFailure(Call<List<response_model_order_status>> call, Throwable t) {
               Log.d("AAAAAAAA", "Service is running..." + mobilenumber + "--5--");
           }
       });
    }

apiset.java:

    @FormUrlEncoded
    @POST("get_order_status.php")
    Call<List<response_model_order_status>> getOrderStatus(
            @Field("mobilenumber") String mobilenumber
    );

get_order_status.php代码:

<?php

require 'connection.php';

$mobilenumber=trim($_POST['mobilenumber']);
        
$qry="select X.orderid from orderlist X where X.mobilenumber='$mobilenumber' and X.ordertime >= CURDATE() order by X.ordertime DESC";

$raw=mysqli_query($con,$qry);
 
while ($res=mysqli_fetch_array($raw))
{
    $data[]=$res;
}

print json_encode($data);

mysqli_commit($con);
mysqli_close($con);

?>

在mysql数据库中,orderlist表中的mobilenumber和orderid列都是varchar(20)。

响应模型:

public class response_model_order_status {
    String orderid;

    public response_model_order_status() {
    }

    public response_model_order_status(String orderid) {
        this.orderid = orderid;
    }

    public String getOrderid() {
        return orderid;
    }

    public void setOrderid(String orderid) {
        this.orderid = orderid;
    }
}

Log.d 输出和错误消息:

我尝试使用不同的语法代码来解析

arrOrderStatus.get(i).getOrderid()
,但无法这样做。

java android json api retrofit
© www.soinside.com 2019 - 2024. All rights reserved.