Java - salida de datos de un JArray

 
Vista:
Imágen de perfil de Violeta
Val: 34
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

salida de datos de un JArray

Publicado por Violeta (16 intervenciones) el 05/11/2020 11:42:12
Hola.

Estoy intentando leer datos desde un Jarray. Se trata de un servicio web al que accedo desde android.
Esta es la consulta Json:

1
2
3
4
5
6
7
8
9
10
11
12
[
      {
      "fechahora": "2020-09-18 00:00:00",
      "v2_ppm": "441.449",
      "v1_ppm": "529.497",
   },
      {
      "fechahora": "2020-09-18 00:05:00",
      "v2_ppm": "438.788",
      "v1_ppm": "529.186",
   }
]

Y este es mi código:

1
2
3
4
5
6
7
8
9
10
JSONObject lectura= new JSONObject();
JSONArray jArray = lectura.getJSONArray("");
 
for(int i=0; i<jArray.length(); i++){
    JSONObject json_data = jArray.getJSONObject(i);
 
    Log.i("log_tag", "_id" + json_data.optString("v2_ppm")
 
    );
}

La cuestión es que me sale un "JSONException: No value for" así que algo estoy haciendo mal obviamente, pero no consigo averiguar qué.

El código lo tengo dentro de un método run() y sin problemas en el acceso al servicio web es sí.

¿Alguna idea? Gracias por adelantado.
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

salida de datos de un JArray

Publicado por Rodrigo (623 intervenciones) el 05/11/2020 17:05:20
En alguna parte de tu codigo le tienes que pasar lo que lees desde el archivo, pero este codigo parece funcionar sin nada de esto.
Creo que el reclamo es respecto a esto.
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
Imágen de perfil de Violeta
Val: 34
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

salida de datos de un JArray

Publicado por Violeta (16 intervenciones) el 05/11/2020 17:21:08
Según veo en otros foros debería pasar un parámetro:

1
JSONObject jsonObject = new JSONObject(jsonString);

[url]Fuente: https://www.iteramos.com/pregunta/82798/leer-una-matriz-json-en-android[/url]

Pero no sé de donde se coge ese parámetro.
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

salida de datos de un JArray

Publicado por Rodrigo (623 intervenciones) el 05/11/2020 17:24:10
Ese jsonString deberia ser el contenido en formato json. Si no, no entiendo como se esta pasando lo que muestras en json.
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
Imágen de perfil de Violeta
Val: 34
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

salida de datos de un JArray

Publicado por Violeta (16 intervenciones) el 05/11/2020 17:46:02
Efectivamente creo que es eso, ¿Cómo se pasa a una variable? El contenido es dinámico y está en una base de datos externa.

Este es todo el código por si sirve:

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public void run() {
 
    try {
 
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
 
        //Creamos URL
        URL uriData = new URL("http://92.222.208.150/get_datataker_data");
 
        // Creamos conexión
        HttpURLConnection myConnection =
                (HttpURLConnection) uriData.openConnection();
 
        //Parámetros
        JSONObject parametrosPost= new JSONObject();
        parametrosPost.put("user","violeta");
        parametrosPost.put("pass","eyJ0eXAiOiJKV1QiLC");
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
        Date date = new Date();
        String fecha = dateFormat.format(date);
 
 
        //Hay que restar 5 minutos a la fecha actual, ya que los valores se
        // vuelcan cada 5 minutos
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date); //tuFechaBase es un Date;
        calendar.add(Calendar.MINUTE, -5); //minutosASumar es int.
        Date fechaSalida = calendar.getTime(); //Y ya tienes la fecha sumada.
        String fecha2=dateFormat.format(fechaSalida);
        parametrosPost.put(" date_from","2020-09-18 00:00:00");
        parametrosPost.put(" date_to","2020-09-19 00:00:00");
 
        myConnection.setReadTimeout(15000 /* milliseconds */);
        myConnection.setConnectTimeout(15000 /* milliseconds */);
        myConnection.setRequestMethod("POST");// se puede cambiar por delete ,put ,etc
        myConnection.setDoInput(true);
        myConnection.setDoOutput(true);
 
        myConnection.connect();
 
        int resCode=myConnection.getResponseCode();
 
        if (resCode == 200) {
 
 
            JSONObject lectura= new JSONObject();
            JSONArray jArray = lectura.getJSONArray("");
 
            mitexto.setText("Elementos: "+jArray.length());
 
            for(int i=0; i<jArray.length(); i++){
                JSONObject json_data = jArray.getJSONObject(i);
 
                Log.i("log_tag", "_id" + json_data.optString("v2_ppm")
 
                );
            }
 
 
 
        } else {
            mitexto.setText("Failed "+resCode);
        }
 
        myConnection.disconnect();
 
 
 
    }catch (MalformedURLException e){
        System.err.println("uri mal formulada");
    }catch (IOException e){
        e.printStackTrace();
        System.err.println("Excepción al abrir la conexión");
    }catch (Exception e){
        System.err.println("Excepción: "+e);
    }
}
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

salida de datos de un JArray

Publicado por Rodrigo (623 intervenciones) el 05/11/2020 18:03:00
Sugiero usar lo que retorne myConnection.responseMessage(), aunque no se si lo que ese metodo retorne sirve directamente o hay que parsearlo. Al menos escribelo en la salida y ves si lo que ahi viene te sirve o no.
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

salida de datos de un JArray

Publicado por Rodrigo (623 intervenciones) el 05/11/2020 18:42:44
Bueno, no era tan simple :(
Pero ... googleando, encontre esto.
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