gpt4 book ai didi

java - JSONException 字符串无法转换为 JSONArray

转载 作者:行者123 更新时间:2023-12-01 08:51:55 25 4
gpt4 key购买 nike

我一直在尝试在 android studio 中为我的应用程序创建一个登录系统,但我不断收到此错误

org.json.JSONException: Value Connection of type java.lang.String cannot be converted to JSONArray

并且无法以任何方式修复它,我希望你能发现它并帮助我。这是我认为问题所在的登录 Activity 的一部分(如果需要,我可以提供更多代码)

    {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 文件,否则无法从字符串创建 JSONArray。

您必须在 PHP 中将数组转换为 JSON 字符串。 (反之亦然,如果我错误地理解了这种关系,我没有太准确地阅读你的代码)。

另一个解决方案是你使用 jquery 和 ajax 函数来调用 PHP 脚本(我不知道你在创建什么,可能是一个 Cordova 插件,在这种情况下你有 Javascript,否则你必须这样做Java 中类似的东西,谷歌是你的 friend )。

这是直接取 self 自己正在制作的应用程序之一的函数。通读一遍,它可能不是100%可复制粘贴的。重要的部分是,它在将 JavaScript 对象发送到 PHP 函数之前将其转换为正确的 JSON 字符串。

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)!');
}
}
});

}

关于java - JSONException 字符串无法转换为 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com