Как исправить 'Имя значения типа java.lang.String не может быть преобразовано в JSONObject' - PullRequest
1 голос
/ 13 июня 2019

Я использую Volley для отправки HTTP-запроса в Android, и я получаю эту ошибку:

java.lang.String не может быть преобразовано в JSONObject.

На стороне сервера я использую PHP-скрипт для получения значений из базы данных.

Мой код Android:

String server_url = "http://192.168.225.40/server/greetings.php";
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, server_url,null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {

                        try {
                            name.setText(response.getString("name"));
                            email.setText(response.getString("email"));
                        }
                        catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if(firebaseUser!=null){
                    if(!firebaseUser.getEmail().isEmpty())
                    {
                        email.setText(firebaseUser.getEmail());}

                }

                error.printStackTrace();

            }
        }
        );
        singletonclasshttp.getInstance(getActivity()).addtorequestque(jsonObjectRequest);

Мой PHP-скрипт:

?php
$username="root";
$password="";
$host = "localhost";
$dbname = "test";
$con = mysqli_connect($host,$username,$password,$dbname);
$sql = "select * from user where uid =1;";
$result = mysqli_query($con,$sql);
$data=array();

if(mysqli_num_rows($result)>0)
{

    $row = mysqli_fetch_assoc($result); 
    echo json_encode(array("name"=>$row["name"],"email"=>$row["email"],"type"=>$row["type"]));


}


?>

Мне нужно проанализировать JSON и установить значение для текстовых полей.

Ответы [ 2 ]

1 голос
/ 13 июня 2019

Вы получаете JsonArray.Вы должны использовать StringRequest.Затем преобразуйте String в JsonArray и получите JsonObject из массива.

1 голос
/ 13 июня 2019

используйте этот сайт для генерации правильного класса ответа из ответа json

...