Com.android.volley.ParseError: org.json.JSONException
Я получил эту ошибку из библиотеки волейбола
@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?
Ответы
Ответ 1
Если вы хотите получить результат в виде строки, не используйте JSONRequest. Перейдите с простым классом Request.
Ваша проблема довольно проста, сервер возвращает JSONArray только одним элементом внутри.
JSONArray не является JSONObject. Вот почему синтаксический анализ не работает.
Ответ 2
Я заметил, что есть класс JsonArrayRequest, поддерживаемый volley, поэтому я использую этот класс, и проблема решена, я использовал JsonObjectRequest
https://android.googlesource.com/platform/frameworks/volley/+/43950676303ff68b23a8b469d6a534ccd1e08cfc/src/com/android/volley/toolbox
Ответ 3
Нам нужно использовать JsonArrayRequest вместо JsonObjectRequest. Код как:
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);
Надеюсь, он решает проблему.