Cómo trabajar con JSON fácilmente en Java

Cómo trabajar con JSON fácilmente en Java

JSON es un formato de intercambio de datos ligero, independiente del idioma que se utiliza hoy en día en cada API web única disponible por ahí. Si estás dispuesto a manipular este tipo de datos en un entorno Java, te explicaremos cómo lograrlo fácilmente utilizando el paquete org.json.

1. Incluir el paquete org.json

Java por defecto no ofrece ninguna funcionalidad integrada para analizar o crear JSON, a diferencia de PHP u otros idiomas, en lugar de eso, tendrás que confiar en una biblioteca/paquete de terceros. En este tutorial, usaremos el org.json. Los archivos en este paquete implementan codificadores/decodificadores JSON en Java. También incluye la capacidad de convertir entre JSON y XML, encabezados HTTP, cookies y CDL. Esta es una implementación de referencia. Hay una gran cantidad de paquetes JSON en Java. Quizás algún día en la comunidad de Java se estandarice en uno, pero hasta entonces, te recomendamos que utilices el paquete org.json que hace las cosas bastante fáciles.

Puedes descargar el archivo jar del paquete desde el repositorio de Maven e incluirlo manualmente en tu proyecto o si tu proyecto está basado en Maven, puedes editar el archivo pom.xml y agregar la dependencia:

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20140107</version>
</dependency>

Para obtener más información sobre este paquete, visita el repositorio oficial en Maven aquí. Después de incluir la biblioteca, podrás importar el paquete import org.json.*;en tu código.

2. Usando la libreria para manipular JSON

Como cada tutorial en Our Code World, aprenderás haciendo y leyendo algunos ejemplos. Compartiremos contigo un par de las funciones más utilizadas cuando debas trabajar con JSON en Java:

A. Crear objetos JSON

El método put de la clase JSONObject te permite definir una nueva clave con un valor para el objeto:

package sandbox;

import org.json.*;

public class Sandbox {
    
    /**
     * Generando un objeto JSON
     * 
     * @param args 
     */
    public static void main(String[] args) {
        JSONObject myObject = new JSONObject();

        // Cadenas de texto básicas
        myObject.put("name", "Carlos");
        myObject.put("last_name", "Carlos");
        
        // Valores primitivos
        myObject.put("age", new Integer(21));
        myObject.put("bank_account_balance", new Double(20.2));
        myObject.put("is_developer", new Boolean(true));
        
        // Matrices
        double[] myList = {1.9, 2.9, 3.4, 3.5};
        myObject.put("number_list", myList);
        
        // Objeto dentro de objeto
        JSONObject subdata = new JSONObject();
        myObject.put("extra_data", subdata);

        // Generar cadena de texto JSON
        System.out.print(myObject);
    }
}

El código imprimirá la siguiente estructura en la consola de la cadena JSON generada:

{
  "number_list": [
    1.9,
    2.9,
    3.4,
    3.5
  ],
  "extra_data": {},
  "name": "Carlos",
  "last_name": "Carlos",
  "bank_account_balance": 20.2,
  "age": 21,
  "is_developer": true
}

B. Creando arrays (matrices) en JSON

El método put de un objeto JSONArray te permite asignar algún valor a la matriz:

package sandbox;

import org.json.*;

public class Sandbox {
    
    /**
     * Generar un array JSON
     * 
     * @param args 
     */
    public static void main(String[] args) {
        JSONArray myArray = new JSONArray();
        
        // Agregar valores mixtos al array
        myArray.put(1);
        myArray.put(2);
        myArray.put(3);
        myArray.put(4);
        myArray.put(new Boolean(true));
        myArray.put(new Boolean(false));
        myArray.put("Some String Value");
        
        // Generar cadena de texto JSON
        System.out.print(myArray);
    }
}

El código imprimirá la siguiente estructura en la consola de la cadena JSON generada:

[1,2,3,4,true,false,"Some String Value"]

C. Interpretando cadenas en JSON

Si estás dispuesto a convertir una cadena JSON en su código (convirtiéndola en matrices u objetos), simplemente proporciona la cadena como primer argumento del constructor de la clase según el tipo, por ejemplo, si deseas convertir una cadena de JSONArray:

package sandbox;

import org.json.*;

public class Sandbox {
    
    /**
     * Interpretar/convertir una cadena de texto en json a array
     * 
     * @param args 
     */
    public static void main(String[] args) {
        JSONArray myJson = new JSONArray("[123,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]");
        
        // Imprimir primer elemento del array
        System.out.print(myJson.get(0));
        
        // Imprimir segundo elemento del array
        System.out.print(myJson.get(1));
    }
}

O si quieres convertir una cadena en un JSONObject:

package sandbox;

import org.json.*;

public class Sandbox {
    
    /**
     * Interpretar/convertir un objeto JSON
     * 
     * @param args 
     */
    public static void main(String[] args) {
        JSONObject myJson = new JSONObject("{ \"number_list\": [ 1.9, 2.9, 3.4, 3.5 ], \"extra_data\": {}, \"name\": \"Carlos\", \"last_name\": \"Carlos\", \"bank_account_balance\": 20.2, \"age\": 21, \"is_developer\": true }");
        
        // Obtener llave especifica de un objeto JSON
        System.out.print(myJson.get("name")); // Carlos
        System.out.print(myJson.get("age")); // 21
    }
}

Que te diviertas !

Esto podría ser de tu interes

Conviertete en un programador más sociable