【发布时间】:2018-04-23 21:47:36
【问题描述】:
我收到了这个错误:
org.json.JSONException: org.json.JSONArray 类型的值 [] 无法转换为 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