Android 无法将JSONObject转换为JSONArray

Android 无法将JSONObject转换为JSONArray,android,json,Android,Json,我正在使用android应用程序调用REST API,POST方法API的结果如下: { "Items": { "ap_id": "37", "ap_time_from": "14:28", "ap_time_to": "16:28", "patient_id": "153", "patient_name": "Nikhil", "patient_email": "a@a.com", "patient_location": "abc" }

我正在使用android应用程序调用REST API,POST方法API的结果如下:

{
"Items": {
    "ap_id": "37",
    "ap_time_from": "14:28",
    "ap_time_to": "16:28",
    "patient_id": "153",
    "patient_name": "Nikhil",
    "patient_email": "a@a.com",
    "patient_location": "abc"
}                        }
使用以下方法将其转换为可读数据:

JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("Items");

for (int i = 0; i < jsonArray.length(); i++) {

 JSONObject object = jsonArray.getJSONObject(i);

DoctorModel doctorModel1 = new DoctorModel();
doctorModel1.setApp_id(object.getString("ap_id"));
doctorModel1.setStart_timing(object.getString("ap_time_from"));
doctorModel1.setEnd_timing(object.getString("ap_time_to"));
doctorModel1.setUser_id(object.getString("patient_id"));
doctorModel1.setUser_name(object.getString("patient_name"));
doctorModel1.setUser_mail(object.getString("patient_email"));
doctorModel1.setLocation(object.getString("patient_location"));
doctorModelList.add(doctorModel1); }

我一直在使用相同的方法将JSON对象数据转换为JSON数组,但我不确定哪里出了问题。任何帮助都将不胜感激,谢谢

您需要在
项中有一个数组作为对象,如下所示:

{
"Items": 
    [
        {
        "ap_id": "37",
        "ap_time_from": "14:28",
        "ap_time_to": "16:28",
        "patient_id": "153",
        "patient_name": "Nikhil",
        "patient_email": "a@a.com",
        "patient_location": "abc"
        }
    ]                        
}

否则,将代码更改为支持单个对象而不是数组

JSONObject jsonObject = new JSONObject(response);
JSONArray object = jsonObject.JSONObject("Items"); 

在当前响应中,
Items
的值有一个JSON对象,而不是JSON数组。这就是为什么会发生这种异常。要将此响应转换为数据模型,您可以使用:

JSONObject jsonObject = new JSONObject(response);
JSONArray object = jsonObject.JSONObject("Items"); 

DoctorModel doctorModel1 = new DoctorModel();
doctorModel1.setApp_id(object.getString("ap_id"));
doctorModel1.setStart_timing(object.getString("ap_time_from"));
doctorModel1.setEnd_timing(object.getString("ap_time_to"));
doctorModel1.setUser_id(object.getString("patient_id"));
doctorModel1.setUser_name(object.getString("patient_name"));
doctorModel1.setUser_mail(object.getString("patient_email"));
doctorModel1.setLocation(object.getString("patient_location"));
doctorModelList.add(doctorModel1);
或者,如果希望从json获取数组,则json将如下所示:

{
"Items": 
    [
        {
        "ap_id": "37",
        "ap_time_from": "14:28",
        "ap_time_to": "16:28",
        "patient_id": "153",
        "patient_name": "Nikhil",
        "patient_email": "a@a.com",
        "patient_location": "abc"
        }
    ]                        
}

希望您理解isse。

JSONArray JSONArray=jsonObject.getJSONArray(“项目”);//此行出现异常,因为您正在尝试将JSONObject(“项”)转换为JSONArray

您必须在响应中进行一些更改:1。如果要在响应中以数组形式返回“Items”

{
"Items": [
    {
      "ap_id": "37",
      "ap_time_from": "14:28",
      "ap_time_to": "16:28",
      "patient_id": "153",
      "patient_name": "Nikhil",
      "patient_email": "a@a.com",
      "patient_location": "abc"
    }
  ]
}
  • 如果您想在响应中像对象一样返回“Items”,那么您必须在代码中进行如下更改
  • JSONObject JSONObject=新的JSONObject(响应);
    JSONObject jsonObjectItem=JSONObject.getJSONObject(“项”)


    但在第二种情况下,无法以数组的形式获得结果

    出现错误的原因是,您试图将JSON对象分配给JSON数组。您应该尝试将其分配到JSON对象中。您希望将该数据显示给
    recyclerview
    ,但根据您从服务获得的响应,它没有向您提供JSON数组
    {
    "Items": [
        {
          "ap_id": "37",
          "ap_time_from": "14:28",
          "ap_time_to": "16:28",
          "patient_id": "153",
          "patient_name": "Nikhil",
          "patient_email": "a@a.com",
          "patient_location": "abc"
        }
      ]
    }