Android 无法将JSONObject转换为JSONArray
我正在使用android应用程序调用REST API,POST方法API的结果如下: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" }
{
"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"
}
]
}