簡體   English   中英

無法將JSONObject轉換為JSONArray

[英]Unable to convert JSONObject into JSONArray

我正在使用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); }

現在,當我嘗試轉換它以便可以在回收站視圖中顯示結果時,出現以下錯誤:

org.json.JSONException: Value
{"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"}
at Items of type org.json.JSONObject cannot be converted to JSONArray

我一直在使用相同的方式將JSON對象數據轉換為JSON數組,但不確定我要去哪里。 任何幫助,將不勝感激,謝謝!

您需要在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"
        }
    ]                        
}

否則,更改代碼以支持單個對象而不是數組

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"
        }
    ]                        
}

希望你能理解這句話。

JSONArray jsonArray = jsonObject.getJSONArray(“ Items”); //此行獲取異常,因為您正嘗試將JSONObject(“ Items”)轉換為JSONArray。

您必須在響應中進行一些更改:1.如果要在響應中以數組形式返回“項目”。

{
"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"
    }
  ]
}
  1. 如果您想像響應中的對象一樣返回“項目”,則必須像這樣更改代碼

JSONObject jsonObject = new JSONObject(response); JSONObject jsonObjectItem = jsonObject.getJSONObject("Items");

但是在第二種情況下,您無法以數組形式獲得結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM