Получение '' org.json.JSONArray не может быть преобразовано в JSONObject '' - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь получить данные с моего сервера в формате json в моем приложении для Android, используя библиотеку залпов после метода json.Но каждый раз получает 'org.json.JSONArray не может быть преобразован в JSONObject'.

Это ошибка:

Error: org.json.JSONException: Value [{"status":"Success","code":1313,"msg":"Request completed successfully"}] of type org.json.JSONArray cannot be converted to JSONObject.

И это мой код:

            RequestQueue requestQueue = Volley.newRequestQueue(this);
            JSONObject jsonObject = new JSONObject();

            try {
                jsonObject.put("auth", "---------");
                jsonObject.put("request", "Login");
                jsonObject.put("Name", "raky");
                jsonObject.put("Email", "exp@a.com");
            } catch (JSONException e) {
                e.printStackTrace();
            }


            String url = "http://my.website_name.com/";
            JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, jsonObject,
                    new Response.Listener<JSONObject>() {
                        @Override
                        public void onResponse(JSONObject response) {

                            Log.d("VOLLEY", response.toString());
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Log.d("ERROR.VOLLEY", error.getMessage());

                        }

                    });

            jsonObjectRequest.setTag(1);
            requestQueue.add(jsonObjectRequest);

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Проблема здесь в том, что объектом тела ответа вашего сайта является JSONArray

[
    {
        "status": "Success",
        "code": 1313,
        "msg": "Request completed successfully"
    }
]

Таким образом, вы получаете исключение, потому что в обработчике ответа вы хотите получить JSONObject, а вы не можете привести JSONArray to JSONObject.

Что ваш сервер (веб-сайт) должен вам вернуть - это root JSONObject, и тогда в своем дереве узлов он может иметь JSONArray, нокорень должен быть JSONObject.

Так что исправьте ваш серверный код , чтобы он возвращал:

    {
        "status": "Success",
        "code": 1313,
        "msg": "Request completed successfully"
    }
0 голосов
/ 23 декабря 2018

Ваш ответ - массив, вы можете протестировать ваш API с помощью некоторых инструментов тестирования API, таких как Postman, и посмотреть, что вы получите от API, также вы можете использовать StringRequest вместо JsonObjectRequest, этим методом вы можете получить любой тип ответа и преобразовать его.к нужному вам типу

...