[英]Java value of type java.lang.string cannot be converted to jsonobject
[英]Android Database of Type java.lang.String cannot be converted to JSONObject
我在這條線上出現錯誤:
JSONObject jsonResponse = new JSONObject(response);
我認為PHP文件有錯誤。 但是我無法弄清楚PHP代碼中的問題是什么。
<?php
require "init.php";
require "password.php";
$username = $_POST["username"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "SELECT * FROM User WHERE username = ?");
mysqli_stmt_bind_param($statement, "s", $username);
mysqli_stmt_execute($statement);
mysqli_stmt_store_result($statement);
mysqli_stmt_bind_result($statement, $colNo, $colUsername, $colPassword, $colName, $colHpno, $colUser_state);
$response = array();
$response["success"] = false;
while(mysqli_stmt_fetch($statement)) {
if (password_verify($password, $colPassword)) {
$response["success"] = true;
$response["username"] = $colUsername;
$response["name"] = $colName;
$response["hpno"] = $colHpno;
}
};
echo json_encode($response);
?>
有人告訴我, mysqli_stmt_bind_result
順序錯誤,但是我在數據庫表中遵循的順序錯誤。
LOGCAT:
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: org.json.JSONException: Value <br><h3>Database of type java.lang.String cannot be converted to JSONObject
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at org.json.JSON.typeMismatch(JSON.java:111)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at org.json.JSONObject.<init>(JSONObject.java:160)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at org.json.JSONObject.<init>(JSONObject.java:173)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at wqyap762.rprqs.LoginActivity$3.onResponse(LoginActivity.java:91)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at wqyap762.rprqs.LoginActivity$3.onResponse(LoginActivity.java:86)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at android.os.Handler.handleCallback(Handler.java:739)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at android.os.Looper.loop(Looper.java:135)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5254)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at java.lang.reflect.Method.invoke(Native Method)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
04-15 11:06:30.319 16826-16826/wqyap762.rprqs W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
您可以嘗試使用以下方法:
new JSONObject("{your string}")
如果仍然拋出錯誤,則可能是服務器端響應出現問題。
如果可以,請在瀏覽器中檢查服務器的響應,然后檢查什么是父對象。 表示如果是這樣,
[
{
"success":true,
"username":"data",
"name":"name",
"hpno":"hpno"
}
]
那么這里的第一個元素是數組'[',在這種情況下,您應該在代碼下面,
JSONArray array = new JSONArray(response);
for(int i=0;i<array.length;i++){
JSONObject obj = array.getJSONObject(i);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.