Org.json.JSONException: значение [] типа org.json.JSONArray не может быть преобразовано в JSONObject в Android

У меня такая ошибка:

org.json.JSONException: Value [] of type org.json.JSONArray cannot be converted to JSONObject

Я пытаюсь показать некоторые записи из базы данных в приложении для Android в соответствии с фильтром. Почтальон показывает мне правильные результаты, показывает ошибку. Я использую в основном те же методы во втором приложении, и оно работает.

Скрипт PHP:

function findUsers($odkial, $co){
        $stmt = $this->con->prepare("SELECT Meno, RodneCislo, PIK FROM zamestnanci WHERE $odkial LIKE ?");
        $stmt->bind_param("s", $co);
        $stmt->execute();
        $stmt->bind_result($Meno, $RC, $PIK);

        $foundUsers = array(); 

        while($stmt->fetch()){
        $user  = array();
        $user['meno'] = $Meno;
        $user['rodnecislo'] = $RC; 
        $user['pik'] = $PIK; 

        array_push($foundUsers, $user); 
        }

        return $foundUsers; 
        }

Метод кода Android для получения некоторых параметров из текста редактирования и счетчика:

public void hladajZaznamy(){
    HashMap<String, String> params = new HashMap<>();
    String pod = podla.getSelectedItem().toString();
    String co = "%"+podlac.getText().toString()+"%";
    params.put("PodlaCoho", pod);
    params.put("Co", co);

    PerformNetworkRequest request = new PerformNetworkRequest(Api.HLADAJ_ZAMESTNANCA, params, CODE_POST_REQUEST);
    request.execute();

}

Сетевой запрос кода Android:

 private class PerformNetworkRequest extends AsyncTask<Void, Void, String> {

    String url;

    HashMap<String, String> params;

    int requestCode;

    PerformNetworkRequest(String url, HashMap<String, String> params, int requestCode) {
        this.url = url;
        this.params = params;
        this.requestCode = requestCode;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }


    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        try {
            JSONObject object = new JSONObject(s); // HERE IS THE ERROR
            if (!object.getBoolean("error")) {
                Toast.makeText(getApplicationContext(), object.getString("message"), Toast.LENGTH_SHORT).show();
                saveRecords(object.getJSONArray("foundUsers"));
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

    //the network operation will be performed in background
    @Override
    protected String doInBackground(Void... voids) {
        RequestHandler requestHandler = new RequestHandler();

        if (requestCode == CODE_POST_REQUEST)
            return requestHandler.sendPostRequest(url, params);


        if (requestCode == CODE_GET_REQUEST)
            return requestHandler.sendGetRequest(url);

        return null;
    }
}

И некоторые результаты почтальона, например, когда PodlaCoho = Meno и Co = %TESTTEST%:

{"error":false,"message":"Zamestnanci uspesne vyhladani","foundUsers":[{"meno":"TESTTEST","rodnecislo":"1111225555","pik":"111111"}]}

Спасибо за любой совет :)

private void saveRecords (JSONArray foundUsers) выбрасывает исключение JSONException {userList.clear (); for (int i = 0; i <foundUsers.length (); i ++) {JSONObject obj = foundUsers.getJSONObject (i); userList.add (новый пользователь (obj.getString ("meno"), obj.getString ("rodnecislo"), obj.getString ("pik"))); } Адаптер UserAdapter = новый UserAdapter (userList); zoznam.setAdapter (адаптер); }

Coldnight 24.04.2018 22:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
145
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это связано с тем, что строка ответа, которую вы конвертируете в JSONObject, должна иметь форму JSONArray, поэтому измените строку с ошибкой на эту.

@Override
protected void onPostExecute(String s) {
    super.onPostExecute(s);
    JSONArray objectArray = new JSONArray();
    for (int i = 0; i < objectArray.length(); i++) {
        //here you can iterate through the array elements and find respective JSONObject and/or other values.
    }
}

Надеюсь это поможет..

выглядит хорошо, но что я могу использовать в качестве аргумента в saveRecords? добавлен метод saveRecords

Coldnight 24.04.2018 22:04

Я вижу вызовы метода saveRecord, но то, что делает этот метод, а также я вижу этот метод ниже той части, где вы получаете сообщение об ошибке .. Итак, как этот метод выполняется, если у вас есть ошибка над этим кодом ..

Aalap Patel 25.04.2018 00:03

Другие вопросы по теме