Desde hace ya un tiempo, se ha incrementado el uso JSON (JavaScript Object Anotation) como el formato para transferir o intercambiar datos. Aunque en un principio únicamente se utilizaba en el desarrollo de aplicaciones de JavaScript, su sencillez lo ha convertido en una opción al formato XML, que era el más conocido hasta hace poco.
Ahora bien, el hecho de que sea sencillo no quiere decir que no sea imprescindible emplear un JSON Parser para acceder a los datos que contenga un archivo de este tipo.
Parsear o analizar un archivo JSON no es otra cosa que extraer la información que necesitamos y que está contenida y escrita en el formato JSON. Estos archivos contendrán información estructurada de dos formas claramente diferenciadas:
Algunas de las librerías disponibles para parsear archivos JSON en Java son: org.json, JsonPATH y Gson.
Para analizar o parasear un JSON en Java es necesario que nos familiaricemos con el uso de algunas librerías que contienen las herramientas que requeriremos para hacer este trabajo.
Una de estas librerías es org.json que tiene unas cuantas clases que nos van a permitir construir, analizar y extraer información de los archivos JSON. Para hacer uso de esta herramienta tendremos que incluirla en nuestros proyectos, habiéndola instalado previamente.
En primer lugar, es necesario convertir el contenido del archivo en objetos, recordemos que para Java todos los componentes de un proyecto son objetos. Una vez logrado esto será necesario que determinemos el tipo de estructuras que contiene el archivo.
Esto porque cada estructura deberá ser extraída utilizando métodos diferentes según sea el caso.
A continuación veremos un ejemplo de cómo se parsea un archivo JSON con esta librería en particular.
En primer lugar, tenemos el archivo JSON que se ve como sigue:
{
"credenciales": {
"usuario": "openbootcamp",
"clave": "EstoEs1clave^_^",
"videos": [
"Primera sesión",
"Segunda sesión",
"Tercera sesión"
]
}
Ahora tenemos el código necesario para parsear este archivo JSON:
package ejemploJSON;
import java.io.InputStream;
import java.io.FileInputStream;
/*es necesario importar la librería para poder usar las clases
y métodos que contiene*/
import org.json.*;
public class Main {
public static void main(String[] args) {
try {
// Creamos el inputstream desde un fichero
InputStream is = new FileInputStream("datos.json");
// Creamos un tokenizador que leera desde nuestro IS
JSONTokener tokener = new JSONTokener(is);
// Y se lo pasamos a una instancia de la clase JSONObject
JSONObject obj = new JSONObject(tokener);
// Sacamos las credenciales usando el método getJSONObjetc
JSONObject credenciales = obj.getJSONObject("credenciales");
String usuario = credenciales.getString("usuario");
String clave = credenciales.getString("clave");
System.out.println("Usuario " + usuario + " clave " + clave);
// Dentro de credenciales tenemos los videos:
JSONArray videos = credenciales.getJSONArray("videos");
for (Object video: videos) {
System.out.println(video.toString());
}
} catch (Exception e) {
System.out.println("No puedo leer el fichero: " + e.getMessage());
}
}