PHP - Problema con json (arreglo)

 
Vista:
sin imagen de perfil
Val: 51
Ha aumentado su posición en 27 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con json (arreglo)

Publicado por Hector (47 intervenciones) el 24/06/2021 18:00:40
Hola amigos del foro esperando que todos se encuentren muy bien de salud, tengo una base de datos en mysql y una tabla que se llama casos, del cual se posee 23 registros en total, es decir 23 campos, pero hay dos de ellos que dependiendo del ingreso y del caso estos pueden quedar vacíos, se graban muy bien en android, pero al momento de llamarlo a través del campo clave me envía este mensaje de error "org.jsonexception: value not of type java.lang.string cannot be converted to jsonarray" , este mensaje lo saco a través de android, ya que en las puebas que se realizan a través de la web y de postmann fuincionan muy bien y no da ningún error, este es el código que se utiliza en PHP para buscar los datos:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
include ("conexion.php");
if ($_SERVER['REQUEST_METHOD'] == 'GET'){
 
    $ID = isset($_GET['ID']) ? $_GET['ID'] : '';
 
    $mysqli= new mysqli('localhost', 'root', '', 'oficina');
    $query = "Select * From casos Where ID = '$ID'";
 
    $result = $mysqli->query($query);
    if ($mysqli -> affected_rows > 0){
        while ($row = $result -> fetch_assoc()){
            $casos = array_map('utf8_encode', $row);
        }
    echo json_encode($casos);
    } else {
    echo "No se encontraron datos";
    }
    $result ->close();
    $mysqli ->close();
}
?>

y este es el código que se utiliza en android studio, para que puedan ver si el error es en android o en php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
private void buscar_casos (String URL){
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, URL, null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            JSONObject jsonObject = null;
            for (int i = 0; i < response.length(); i++) {
                try {
                    jsonObject = response.getJSONObject(i);
                    et_clave.setText(jsonObject.getInt("ID"));
                    et_denuncia.setText(jsonObject.getString("Fecha_Denuncia"));
                    et_siniestro.setText(jsonObject.getString("Fecha_Siniestro"));
                    et_numsiniestro.setText(jsonObject.getInt("N_Siniestro"));
                    et_descripcion.setText(jsonObject.getString("Descripcion"));
                    et_conductor.setText(jsonObject.getString("Nombre_Conductor"));
                    et_rut.setText(jsonObject.getString("Rut_Conductor"));
                    et_patente.setText(jsonObject.getString("Patente_Vehiculo"));
                    et_tercero.setText(jsonObject.getString("Nombre_Tercero"));
                    et_patenteter.setText(jsonObject.getString("Patente_Tercero"));
                    et_compania.setText(jsonObject.getString("Nombre_Compania"));
                    et_inspeccion.setText(jsonObject.getString("Inspeccion"));
                    et_nombre.setText(jsonObject.getString("Nombre_Asegurado"));
                    et_rut1.setText(jsonObject.getString("Rut_Asegurado"));
                    et_poliza.setText(jsonObject.getInt("N_Poliza"));
                    et_causa.setText(jsonObject.getString("Tipo_Seguro"));
                    et_analista.setText(jsonObject.getString("Analista"));
                    et_perdida.setText(jsonObject.getString("Perdida"));
                    et_designacion.setText(jsonObject.getString("Fecha_Designacion"));
                    et_monto.setText(jsonObject.getInt("Monto_Perdida"));
                    et_informe.setText(jsonObject.getString("Fecha_Informe"));
                    et_inspector.setText(jsonObject.getString("Inspector"));
                    et_activo.setText(jsonObject.getString("Activo"));
                } catch (JSONException e) {
                    Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
                }
            }
        }
    }, new Response.ErrorListener(){
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
    );
    requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(jsonArrayRequest);
}
 
btn_buscar.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        buscar_casos("http://192.168.1.96/oficina/buscar.php?ID ="+et_registro.getText()+"");
    }
});

ojala que me puedan ayudar ya que llevo varios días metido en esta parte, soy nuevo en estas lides y necesito de vuestra ayuda, he recurrido a varias paginas y nadie me ha podio ayudar, disculpen las molestias y desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con json (arreglo)

Publicado por Rrazo (55 intervenciones) el 25/06/2021 05:28:03
Creo que tu problema es que no estas definiendo el nombre del objecto del tipo array que quieres obtener
Cómo se llama tu archivo JSON de entidades ?

Te mostrare como lo hago yo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void onResponse(JSONObject response) {
        jsonClientes jsonClientes = null;
 
        JSONArray json = response.optJSONArray("clientes");   // Mi objeto a recuperar se llama clientes
 
        try {
            for (int i = 0; i < json.length(); i++) {
                jsonClientes = new jsonClientes();
                JSONObject jsonObject = null;
                jsonObject = json.getJSONObject(i);
 
                jsonClientes.setIdUnico(jsonObject.optString("idUnico"));
                jsonClientes.setNombreCliente(jsonObject.optString("nombreCliente"));
         } catch (JSONException e) {
            e.printStackTrace();
            Toast.makeText(getContext(), "Ocurrio un error " + e.toString(), Toast.LENGTH_SHORT).show();
            Log.i("Error", e.toString());
            progressDialog.dismiss();
        }


Y mi WS de php devuelve asi
1
2
3
4
5
6
while ($cliente = mysqli_fetch_array($sqlClientesDoIt)) {
 
      $json['clientes'][] = $cliente;  // Como te darás cuenta mi objeto se llama Clientes
    }
 
$server_response = json_encode($json);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 51
Ha aumentado su posición en 27 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con json (arreglo)

Publicado por Hector (47 intervenciones) el 25/06/2021 16:16:30
Muchas gracias por tu ayuda Rrazo, pero a que te refieres con eso del nombre de archivo de json de entidades, si te das cuenta en los código que mencione ahí se mencionan, o es otro dato de que mencionas, como les mencione anteriormente soy nuevo en estas lides, además probé tus sugerencias están muy buenas pero hay un solo problema lo que quiero mostrar es en cada caja de texto cada campo de la tabla, pero por lo visto me funciono solo con un list view, por eso lo hice con jsonject según lo aconsejado en la pagina de android, o estaré equivocado, favor de aconsejarme.
Por otro lado, si revisas el código en php y probado en postmann y en la web están Ok, por eso es la duda porque no muestra ningún dato a través del android, me costo tanto llegar al resultado final de este php y del código en android, porque lo que leí el jsonarray se utiliza con list view y el jsonobject con los edittext, por eso lo hice así, ya que lo que pretendo que realice el usuario las modificaciones o eliminar este campo como lo estime conveniente, y nuevamente muchas gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar