Continuación
En la entrada anterior vimos como obtener datos JSON con Java y luego los imprimimos en pantalla en "bruto", es decir los imprimimos como mismo los obtuvimos. Para dar un ejemplo esta bien, pero no es muy útil al momento de hacer una aplicación del mundo real. Para poder realmente consumir los datos debemos tener una manera fácil de acceder por separado a cada uno de los valores en los registros. A continuación veremos como hacer esto.Existe más de una manera de trabajar con JSON en Java, en esta ocasión lo haremos utilizando el paquete javax.json.
Lo primero que haremos será obtener el paquete y configurarlo en nuestro proyecto. Es muy recomendable utilizar Maven, sobre todo si están trabajando en un proyecto complejo, pero para no desviarnos demasiado del propósito de este tutorial vamos a descargarlo directamente desde aquí:
http://www.java2s.com/Code/Jar/j/Downloadjavaxjson10jar.htm
En mi caso estoy utilizando NetBeans, la configuración debe ser similar para otro IDE que utilicen. Estos son los pasos:
1. Localizamos nuestro proyecto, en el nombre damos click derecho y accedemos a Properties:
2. Entramos en la sección Libraries, damos click en Add Jar/Folder:
3. Localizamos la ruta donde descomprimimos el archivo descargado, los seleccionamos y damos clic en Abrir:
Modificaciones al código
Importamos lo siguiente:
Añadimos la lógica para manejar los datos en formato JSON:
A continuación se muestra el código completo.
Código
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 79 80 81 82 83 84 85 86 | package jsonexample; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.io.StringReader; import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonObject; import javax.json.JsonReader; public class JsonExamplePart2 { /** * @param args the command line arguments */ public static void main(String[] args) { //Escribimos el código dentro de un bloque try - catch, si ocurrre //un error, lo capturamos y mostramos el mensaje correspondiente try { //establecemos la url que itilizaremos para obtener los datos URL miUrl = new URL("https://jsonplaceholder.typicode.com/comments"); //abrimos una conexion HTTP HttpURLConnection conexion = (HttpURLConnection) miUrl.openConnection(); //le indicamos el método de solicitud que utilizaremos, //en este caso GET conexion.setRequestMethod("GET"); //indicamos que recibiremos datos en formato JSON conexion.setRequestProperty("Accept", "application/json"); //leeemos la respuesta de la petición y la colocamos en un buffer InputStreamReader isr = new InputStreamReader(conexion.getInputStream()); BufferedReader br = new BufferedReader(isr); //construimos la cadena con el contenido de los comentarios StringBuilder contenido = new StringBuilder(); String linea; while ((linea = br.readLine()) != null) { contenido.append(linea); } //obetenemos un JsonArray a partir de la cadena anterior JsonReader jsonReader = Json.createReader(new StringReader(contenido.toString())); JsonArray comentariosArray = jsonReader.readArray(); jsonReader.close(); //con el array construido ahora ya solo nos queda utilizar los //valores a nuestro antojo. En este caso quiero imprimir solo //el nombre del comentario y el email for (int i = 0; i < comentariosArray.size(); i++) { JsonObject comentario = comentariosArray.getJsonObject(i); System.out.println("Nombre: " + comentario.getString("name") + " | Email: " + comentario.getString("email") ); } //por último liberamos la conexión conexion.disconnect(); //en caso de que ocurra un excepción mostramos el mensaje de error } catch (Exception ex) { System.out.println("Excepción: " + ex.getMessage()); } } } |
Salida de ejemplo
Al ejecutar el código deben obtener una salida similar a esta:
Comentarios
Publicar un comentario