Manejo de arrays JSON en Java
- Manejo de arrays JSON en Java
- Objetos JSON y arrays JSON en Java
- Use las bibliotecas integradas de Java para leer un array JSON en Java
- Conclusión
JSON es un formato de intercambio de datos popular y ampliamente utilizado entre desarrolladores y organizaciones. El término JSON significa JavaScript Object Notation.
Es un marco ligero, legible y basado en texto especialmente diseñado para facilitar el intercambio de datos en formato legible por humanos. JSON es un formato estándar abierto, lo que significa que se puede usar en cualquier lugar sin requisitos especiales.
Además, JSON es compatible con la mayoría de los lenguajes de programación. Es posible que haya encontrado JSON si alguna vez trabajó como desarrollador de proyectos que requieren intercambio de datos.
Por ejemplo, a menudo usamos objetos JSON para transferir datos de un servidor a una aplicación móvil y viceversa. Este artículo comprenderá los conceptos básicos de JSON, como la estructura de JSON, los tipos de datos, los objetos JSON, las arrays JSON, etc.
También entenderemos cómo trabajar con JSON en Java. Al final, este artículo proporciona un código de ejemplo para manejar JSON en Java.
Manejo de arrays JSON en Java
JSON es un marco de intercambio de información muy flexible y liviano en el que usamos objetos y tipos de datos para crear y compartir información.
En JSON, los datos se representan como pares clave-valor donde la clave es específicamente una cadena, mientras que el valor puede ser cualquier tipo de datos compatible con JSON.
JSON admite los siguientes tipos de datos.
- Cuerda
- Número
- Booleano
- Nulo
Además de estos tipos de datos JSON básicos, también podemos usar arrays JSON y objetos JSON como valor en un par clave-valor.
Además, en el artículo, estudiaremos más sobre arrays y objetos. Pero antes de eso, veamos las características de JSON.
Algunas de las características sobresalientes de JSON son las siguientes.
- JSON es muy simple. No tiene que hacer ningún esfuerzo adicional para comprender y usar JSON.
- JSON es fácilmente comprensible y autodescriptivo. Al mirar un objeto JSON, puede comprender fácilmente lo que pretende transmitir.
- JSON es independiente del idioma. Esta característica ha demostrado ser un factor importante en la amplia aceptación de JSON. Podemos trabajar con JSON en casi todos los idiomas con la ayuda de bibliotecas y códigos simples.
- JSON es más rápido que XML. Es otra razón más para usarlo ampliamente.
Objetos JSON y arrays JSON en Java
Antes de aprender a usar arrays y objetos JSON en Java, comprenderemos los objetos JSON y las arrays JSON.
Los objetos JSON son muy similares al tipo de datos del diccionario, donde los datos se almacenan como pares clave-valor. La clave en este par clave-valor debe ser una cadena, mientras que el valor puede ser un objeto, un array o cualquier otro tipo de datos compatible.
Debemos separar una clave y un valor por dos puntos :
y cada par clave-valor por una coma ,
. Un objeto JSON se representa mediante llaves {}
.
Podemos crear objetos JSON arbitrariamente complejos anidando objetos y arrays en nuestros objetos JSON. Se llama un objeto JSON jerárquico.
Este es un ejemplo de un objeto JSON que representa los detalles de un estudiante.
{"name": "Roger", "Roll": 22, "Class": "XI"}
Tenga en cuenta que hemos entrecomillado los valores de cadena con comas dobles, mientras que los números no necesitan estar entrecomillados.
Acabamos de discutir los objetos JSON que son similares a un diccionario. Por otro lado, las arrays JSON son similares a las listas.
Encerramos los objetos entre corchetes []
en una lista. Una matriz JSON puede contener cualquier tipo de datos soportado, incluyendo otro array o un objeto JSON.
Aquí hay un ejemplo de un array JSON.
[1, "abc", {"name":"xyz"}]
Tenga en cuenta que la matriz JSON anterior contiene un número, una cadena y un objeto. Significa que podemos almacenar diferentes tipos de datos en un array.
Use las bibliotecas integradas de Java para leer un array JSON en Java
Java es un lenguaje poderoso con una gran cantidad de bibliotecas. Afortunadamente, tenemos bibliotecas integradas para leer arrays y objetos JSON en Java.
Estas bibliotecas facilitan nuestro trabajo y simplifican el análisis y la lectura de arrays y objetos JSON. Más adelante en este artículo, aprenderemos a usar dichas bibliotecas en el código para leer el objeto JSON y la matriz JSON en Java.
Antes de continuar con el código, creamos un objeto JSON y lo almacenamos en un archivo. Tenga en cuenta que un archivo JSON tiene la extensión .json
.
Entonces, si desea probar y ejecutar el código, copie y pegue el siguiente código JSON y guarde el archivo con la extensión .json
en cualquier ubicación deseada. El código JSON se proporciona a continuación.
[{
"name":"MMN",
"roll": 24,
"marks": [91, 95, 97, 97, 94],
"parents": {
"name": "IMT",
"mobile":"1234567890"
},
"hobbies": ["sports", "reading", "music"],
"others": ["A", 1]
}]
Debe tener en cuenta que este archivo JSON contiene un array JSON con un solo objeto JSON. Este objeto JSON interno contiene varios pares clave-valor con diferentes tipos de datos.
Por ejemplo, name
es una cadena, roll
es un número entero (tenga en cuenta que JSON almacena números enteros como números enteros largos), marks
es un array JSON, parents
es otro objeto JSON, etc. Por lo tanto, este es un ejemplo de datos JSON arbitrariamente complejos.
Entendamos cómo podemos leer un objeto JSON de este tipo usando Java.
Antes de escribir el código, debe asegurarse de haber descargado el archivo jar JSON y agregado la variable classpath
que apunta a ese archivo JSON. Si no hace esto, no se compilará JSON.
Podemos abrir un archivo JSON de la misma manera que abrimos cualquier otro archivo en Java, esencialmente usando el constructor File()
.
Debemos rodear la declaración de apertura del archivo con un bloque try-catch
para manejar la excepción necesaria que lanza el constructor.
Una vez que el archivo está abierto, su objeto se pasa al constructor FileReader()
.
Usamos un analizador JSON que devuelve un objeto Java para analizar el contenido JSON. Deberíamos usar un lanzamiento explícito para lanzar un array JSON.
Nuestra matriz JSON contiene un solo objeto, pero en algunos casos, es posible que tengamos varios objetos JSON en un array JSON, por lo que debemos recorrer la matriz analizada mediante un bucle. Extraemos cada objeto JSON de la matriz JSON analizada y lo procesamos.
Tenga en cuenta que debemos conocer la estructura del objeto JSON que estamos iterando porque necesitamos extraer los valores en un objeto JSON usando la clave.
Además, extraemos los datos del objeto JSON pasándolos a una función que usa claves con nombre. Dado que JSON Object contiene diferentes tipos de datos, cada uno puede manejarse en consecuencia.
Por ejemplo, mostramos el número entero, la cadena y la matriz, pero iteramos los padres
del objeto JSON anidado. El siguiente código implementa la lógica explicada.
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.*;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class JSONReader {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
FileReader fileReader;
try {
File file = new File("/home/stark/eclipse-workspace-java/Aditya/src/data.json");
fileReader = new FileReader(file);
// Parser returns an object, we need an explicit cast to covert it into a JSONArray
JSONArray array = (JSONArray) parser.parse(fileReader);
// Traverse the list
for (int i = 0; i < array.size(); i++) {
JSONObject obj = (JSONObject) array.get(i);
parseObject(obj);
}
}
catch (FileNotFoundException e) {
System.out.println(e.getStackTrace() + " :File Not Found");
} catch (ParseException e) {
System.out.println(e.getStackTrace() + " :Could not parse");
} catch (IOException e) {
System.out.println(e.getStackTrace() + " :IOException");
}
}
private static void parseObject(JSONObject obj) {
String name = (String) obj.get("name");
long roll = (long) obj.get("roll");
JSONArray marks = (JSONArray) obj.get("marks");
JSONArray hobbies = (JSONArray) obj.get("hobbies");
JSONObject parents = (JSONObject) obj.get("parents");
JSONArray others = (JSONArray) obj.get("others");
System.out.println("Name: " + name);
System.out.println("Roll: " + roll);
System.out.println("Marks: " + marks);
System.out.println("Hobbies: " + hobbies);
System.out.println(
"Parent's Name: " + parents.get("name") + ", Mobile: " + parents.get("mobile"));
System.out.println("Others: " + others);
}
}
Debe especificar la ruta correcta del archivo en el constructor File()
. La salida del código anterior está a continuación.
Name: MMN
Roll: 24
Marks: [91,95,97,97,94]
Hobbies: ["sports","reading","music"]
Parent's Name: IMT, Mobile: 1234567890
Others: ["A",1]
Conclusión
Java es un lenguaje de programación popular y, a menudo, nos encontramos con situaciones en las que necesitamos intercambiar datos. Aunque existen otros formatos de intercambio de datos, JSON es uno de los formatos más populares, fáciles y comprensibles.
Hemos aprendido el formato JSON, sus tipos de datos y archivos JSON analizados en Java. JSON puede tener una estructura arbitrariamente compleja que nos permite intercambiar cualquier dato JSON.
Por otro lado, Java proporciona un método simple, único pero poderoso para manejar JSON.