org.json.jsonexception:org.json.jsonarray类型的值[]不能转换为Android中



我有一个错误:

org.json.jsonexception:org.json.jsonarray类型的值[]不能转换为jsonobject

我试图根据过滤器显示Android应用程序中数据库的一些记录。Postman向我展示了正确的结果显示错误。我在第二个应用程序中使用基本的相同方法。

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 Code NetworkRequest:

 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 = MenoCo = %TESTTEST%

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

感谢您的任何建议:)

这是因为您要转换为 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.
    }
}

希望这会有所帮助..

相关内容

最新更新