簡體   English   中英

無法將類型為java.lang.String的Android數據庫轉換為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);
}

價值

[英]Value <br of type java.lang.String cannot be converted to JSONObject - android php


[英]Value <br of type java.lang.String cannot be converted to JSONObject Android

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM