簡體   English   中英

JSONException字符串無法轉換為JSONArray

[英]JSONException String cannot be converted to JSONArray

我一直在嘗試為Android Studio中的應用制作一個登錄系統,但不斷出現此錯誤

org.json.JSONException:類型為java.lang.String的值連接無法轉換為JSONArray

並且無法以任何方式修復它,希望您能發現並幫助我。 我認為這是登錄活動的一部分(如果需要,我可以提供更多代碼)

    {StringRequest stringRequest = new StringRequest(Request.Method.POST, login_url,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try
                {
                    JSONArray jsonArray = new JSONArray(response);
                    JSONObject jsonObject = jsonArray.getJSONObject(0);
                    String code = jsonObject.getString("code");
                    if(code.equals("login_failed"))
                    {
                        builder.setTitle("Login Error...");
                        displayAlert(jsonObject.getString("message"));
                    }
                    else
                    {
                        Intent intent = new Intent(LoginActivity.this,TestActivity.class);
                        Bundle bundle = new Bundle();
                        bundle.putString("email",jsonObject.getString(("email")));
                        intent.putExtras(bundle);
                        startActivity(intent);
                    }
                }
                catch (JSONException e)
                {
                    e.printStackTrace();
                }

            }
        }, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error)
    {
        Toast.makeText(LoginActivity.this,"Error",Toast.LENGTH_LONG).show();
        error.printStackTrace();
    }
})
{
    @Override
    protected Map<String, String> getParams() throws AuthFailureError
    {
        Map<String,String> params = new HashMap<String, String>();
        params.put("email",email);
        params.put("password",password);
        return params;
    }
};
    MySingleton.getmInstance(LoginActivity.this).addToRequestQue(stringRequest);

}

這是PHP代碼:

<?php
require "connection.php";
$email = $_POST["email"];
$password = $_POST["password"];

$sql = "select email,password from user_info where email like '".$email."' and password like '".$password."';";
$result = mysqli_query($connection,$sql);
$response = array();
if(mysqli_num_rows($result)>0)
{
    $row = mysqli_fetch_row($result);
    $email = $row[0];
    $password = $row[1];
    $code = "login_success";
    array_push($response,array("code"=>$code,"email"=>$email,"password"=>$password));
    echo json_encode($response);
}
else
{
    $code = "login_failed";
    $message = "User not found...";
    array_push($response,array("code"=>$code,"message"=>$message));
    echo json_encode($response);    
}
mysqli_close($connection);
?>

除非該字符串是正確的字符串化JSON文件,否則無法從String創建JSONArray。

您必須在PHP中將數組轉換為JSON字符串。 (反之亦然,如果我對關系的理解不正確,則可能是因為我閱讀的代碼不太准確)。

另一個解決方案是讓您使用jquery和ajax函數來調用PHP腳本(我不知道您要創建的內容,可能是Cordova插件,在這種情況下您具有Javascript,否則您將必須執行類似的操作Java,Google是您的朋友)。

這是直接從我自己開發的一個應用程序中提取的功能。 通讀它,它可能不是100%復制可粘貼的。 重要的部分是,它將JavaScript對象轉換為適當的JSON字符串,然后再將其發送到PHP函數。

function login(successCallback, errorCallback, args) {
var loginData = {
    "username": args[0].username,
    "password": args[0].password
};
var dataString = JSON.stringify(loginData);
$.ajax({
    url: 'login.php',
    method: 'post',
    data: {loginData: dataString},
    dataType: 'json',
    complete: function (data) {
        console.log(data.responseText);
    },
    error: function (xhr, status, errorThrown) {
        console.log("Error: " + errorThrown);
        console.log("Status: " + status);
        errorCallback('Error logging in!');
    },
    success: function (data) {
        if (data.status == "success") {
            console.log(data.responseText);
            successCallback('Success logging in!');
        } else if (data.status = "noConnection") {
            console.log(data.responseText);
            errorCallback('Could not connect to database.');
        } else {
            console.log(data.responseText);
            errorCallback('Error logging in (but database was connected to)!');
        }
    }
});

}

JSONException:值

[英]JSONException: Value <br of type java.lang.String cannot be converted to JSONArray

暫無
暫無

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

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