我从排球库中得到了这个错误
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
错误
com.android.volley.ParseError: org.json.JSONException: Value [{"id":"admin","name":"Admin"}] of type org.json.JSONArray cannot be converted to JSONObject
如何以字符串形式接收结果,然后我将使用jackson处理它?</ p>
答案 0 :(得分:22)
如果要以字符串形式接收结果,请不要使用JSONRequest。使用简单的Request类。 你的问题非常简单,服务器只返回一个内部只有一个元素的JSONArray。 JSONArray不是JSONObject。这就是解析失败的原因。
答案 1 :(得分:6)
RequestQueue queue = Volley.newRequestQueue(this);
final String url = "http://192.168.88.253/mybazar/get_product_list.php";
// prepare the Request
JsonArrayRequest getRequest = new JsonArrayRequest(Request.Method.GET, url, null,
new Response.Listener<JSONArray>()
{
@Override
public void onResponse(JSONArray response) {
// display response
Log.d("Response", response.toString());
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Error.Response", error.toString());
}
}
);
// add it to the RequestQueue
queue.add(getRequest);
希望,它解决了这个问题。
答案 2 :(得分:5)
我注意到volley支持类JsonArrayRequest所以我使用这个类并且问题解决了,我使用的是JsonObjectRequest
答案 3 :(得分:0)
以下逻辑可能对您有用:
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(
Request.Method.GET,
url,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject jsonObject1 = new JSONObject(response.toString());
JSONArray jsonArray = jsonObject1.getJSONArray("statewise");
Log.d("Json response", "onResponse: "+jsonObject1.toString());
for (int i = 0; i < jsonArray.length; i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
//Here you will get your result so can use textview
//to populate the result
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d(TAG, "onErrorResponse: "+error);
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonObjectRequest);
}