Android 凌空向Arraylist传递JsonArray请求
您好,我是android新手,我尝试使用jsonarray请求将json响应传递给arraylist,但我遇到了以下错误: 错误: 截击错误org.json.JSONException:无法将java.lang.String类型的值Android 凌空向Arraylist传递JsonArray请求,android,json,android-volley,Android,Json,Android Volley,您好,我是android新手,我尝试使用jsonarray请求将json响应传递给arraylist,但我遇到了以下错误: 错误: 截击错误org.json.JSONException:无法将java.lang.String类型的值
Php代码:
$userid=$_POST["userid"];
$semester=$_POST["semester"];
$level=$_POST["level"];
$stmt="SELECT coursecode,coursetitle,grade,credithrs,marks FROM tblresults WHERE userid = '$userid' and semester = '$semester' and level = '$level'";
$result=mysqli_query($conn,$stmt);
$responsea=array();
while($respons=mysqli_fetch_array($result)){
$response["coursecode"]=$respons['coursecode'];
$response["coursetitle"]=$respons['coursetitle'];
$response["grade"]=$respons['grade'];
$response["credithrs"]=$respons['credithrs'];
$response["marks"]=$respons['marks'];
$responsea[]=$response;
}
echo json_encode($responsea);
Php响应:
[{"coursecode":"csc234","coursetitle":"Information Security","grade":"A","credithrs":"3","marks":"80.00"},{"coursecode":"csc300","coursetitle":"Cryptography","grade":"B","credithrs":"3","marks":"65.00"}]
android代码:
public ArrayList<resultInstance> extractresult() {
CheckResultFragment checkResultFragment=new CheckResultFragment();
final String gsem=checkResultFragment.gsem;
final String glev=checkResultFragment.glev;
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.POST, jsonurl, null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
int i=0;
while (i<response.length()){
try {
JSONObject jsonObject=response.getJSONObject(i);
resultInstance resultinstance =new resultInstance(
jsonObject.getString("coursecode"),
jsonObject.getString("coursetitle"),
jsonObject.getInt("credit"),
jsonObject.getDouble("marks"),
jsonObject.getString("grade"));
results.add(resultinstance);
i++;
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}
){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params=new HashMap<>();
params.put("userid",guid);
params.put("level",glev);
params.put("semester",gsem);
return params;
}
};
VolleySingleton.getInstance(context).addToRequestQueue(jsonArrayRequest);
return results;
}
public ArrayList extractresult(){
CheckResultFragment CheckResultFragment=新的CheckResultFragment();
最终字符串gsem=checkResultFragment.gsem;
最终字符串glev=checkResultFragment.glev;
JsonArrayRequest JsonArrayRequest=新的JsonArrayRequest(Request.Method.POST,jsonurl,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
int i=0;
虽然(我调试并设置断点,但您的API调用php响应不是JSONArray格式。请发送正确的JSONArray格式作为对API调用请求的响应。您好,您可以给我一个正确JSONArray格式的示例。[{“coursecode”:“csc234”,“CourseTile”:“信息安全”,“等级”:“a”,“credithrs”:“3”,“分数”:“80.00”},{“coursecode”:“csc300”,“CourseTile”:“密码学”,“等级”:“B”,“学分HRS”:“3”,“分数”:“65.00”}]
您的JSONArray格式是正确的。但有时,使用PHP后端,HTML标记也会随响应一起出现。例如,
。在这种情况下,会发生上述异常。因此,是否仍有办法解决此错误,因为我正在研究,但尚未找到任何解决方案。感谢您的帮助。您需要在PHP backen中修复此错误d代码。特别是在发送响应代码段上。