Java 无法从jsonobject提取jsonarray
我一直在与使用改进的服务器的响应作斗争 我有来自服务器的json响应Java 无法从jsonobject提取jsonarray,java,arrays,json,retrofit2,Java,Arrays,Json,Retrofit2,我一直在与使用改进的服务器的响应作斗争 我有来自服务器的json响应 { "success": true, "message": "Your Requests", "data": { "requests": [ { "_id": "5d163a5ed2399f8be6d8d867", "created": "2019-06-28T16:03:42.463Z",
{
"success": true,
"message": "Your Requests",
"data": {
"requests": [
{
"_id": "5d163a5ed2399f8be6d8d867",
"created": "2019-06-28T16:03:42.463Z",
"pickupCoordinates": [
8.0099,
6.0909
],
"destinationCoordinates": [
9.088788,
3.099403
],
"customerName": "Seun Akinbode",
"pickupAddress": "Lekki",
"destinationAddress": "Ajah",
"accessCode": "3334",
"busPlate": "DD222RR",
"flaName": "Simi",
"flaEmail": "awele@kobo360.com",
"__v": 0
} ]
}
我使用下面的类来解析json,但不幸的是,它无法将数组请求提取到jsonArray中
public ArrayList<RequestModel> getData(String response)
{
Log.d("responseData :", response);
ArrayList<RequestModel> dataList = new ArrayList<>();
try {
JSONObject mainObj = new JSONObject(response);
JSONArray array = mainObj.getJSONArray("data");
Log.d("The main Array :", array.toString());
RequestModel data;
for(int i = 0;i<array.length();i++)
{
data = new RequestModel();
JSONObject resObj = array.getJSONObject(i);
JSONArray reqArray = resObj.getJSONArray("requests");
for( int j =0;j<reqArray.length();j++) {
JSONObject reqObj = reqArray.getJSONObject(j);
data.setAccessCode(reqObj.getString("accessCode"));
Log.d("Accessecode :", reqObj.getString("accessCode"));
data.setCustomerName(reqObj.getString("customerName"));
Log.d("customerName :", reqObj.getString("customerName"));
}
dataList.add(data);
}
} catch (Exception e) {
e.printStackTrace();
}
return dataList;
}
Logcat正在打印JSONObject,但它说。。。org.json.JSONObject类型的数据无法转换为JSONArray这可能是问题所在:
JSONArray array = mainObj.getJSONArray("data");
数据是响应中看到的对象,而不是数组。您试图从数据字段中提取数组,而响应包含对象。也许您的意思是获取对象数据,然后数组从其中请求