Cargando



Construcción de JSON y XML en Java

En este tutorial estaremos viendo las herramientas para que podamos utilizar cualquiera de los dos formatos y así no limitarnos, por ello veremos cómo atacar la construcción tanto de JSON como XML en nuestras aplicaciones escritas en Java.


feb 27 2015 04:58
Profesional
feb 27 2015 09:40
La interconexión de servicios ha llevado a las aplicaciones y programas a generar y trabajar con archivos de formatos estándar. En un momento inicial el XML tuvo un gran auge debido a lo estricto de su conformación y esto garantizaba el poder leer los datos de forma consistente sin ningún tipo de problemas.

En la actualidad XML sigue siendo un formato respetado y muy útil, pero también surge otro formato que está colocando la balanza a su favor y este es el JSON, su popularidad se debe a que es muy ligero y no requiere de tantos caracteres para crear estructuras, pero sigue siendo estricto por lo que se puede confiar en el mismo.

Requisitos


1- Para poder correr los ejemplos que dejamos aquí, es necesaria la instalación del JDK de Java en su versión 8, sino poseemos esta versión, la ejecución de los mismos no será exitosa, además es recomendable no instalar Java 9 ya que aún está en fase de pruebas y puede contener algunos errores.

2- Debemos también tener un editor de textos para codificar, puede ser Sublime Text o un IDE como Eclipse si este es más del gusto del desarrollador.

3- Finalmente debemos tener permisos de ejecución en consola de los comandos, así como nuestras variables de entorno estén seteadas con los valores correctos para compilar y ejecutar las aplicaciones que desarrollemos.

JSON


JSON corresponde a las siglas JavaScript Object Notation y es un formato nativo de JavaScript como su nombre lo indica, pero su versatilidad y la forma tan sencilla de construir documentos lo han hecho una gran opción para trabajar.

Generalmente se le encuentra en sistemas web, pero recientemente ha tomado protagonismo en sistemas de Bases de Datos no relacionales como MongoDB enlace o CouchDB enlace para manejar los documentos y las diferentes configuraciones de los mismos.

También este formato se ha hecho popular por ser la base de la transferencia de información de los diferentes servicios REST modernos para APIs como Facebook o Twitter, por lo que su conocimiento siempre será un buen añadido a nuestras habilidades.

JSON en Java


El formato JSON al ser un formato de solo texto y que tiene una estructura no tan compleja, nos permite generarlo directamente como una cadena, esta es una de las primeras formas que podemos utilizar.

En Java al tener una librería de manejo de Strings o cadenas de texto tan completa, la generación bajo esta modalidad de JSON es bastante sencilla. Por supuesto a nivel práctico cuando hablamos de documentos muy complejos perdemos la facilidad de la administración de nuestro contenido, pero no por ello quiere decir que sea un método inútil.

Un ejemplo de archivo JSON se puede expresar como lo siguiente:
{“dia”:”lunes”, “mes”:”febrero”}
Como vemos no es nada complejo, y se puede extender hacia adentro de forma casi infinita, por ejemplo:
{“dia”:{“numero”:”01”, “semana”:”lunes”}, “mes”:”febrero”}
Así podemos ir creando diferentes estructuras según el grado de profundidad y de complejidad que nuestra aplicación nos dicte. Veamos a continuación un pequeño ejemplo de cómo generar directamente un documento JSON con Java.

La aplicación


Vamos a generar un archivo JSON en el cual vamos a almacenar la fecha de nuestro sistema, para ello por supuesto vamos a utilizar la clase Date de Java, y vamos a construir un par de métodos que nos ayudarán a recaudar la información y darle el formato adecuado.

Veamos primero el código y luego explicaremos paso a paso que hemos hecho.
import java.time.LocalDate;public class jsonManual { private static final String APERTURA = "{"; private static final String CIERRE = "}"; public static void main(String[] args) { LocalDate fechaActual = LocalDate.now(); System.out.println(convertirJson(fechaActual)); } public static String convertirJson(LocalDate fechaActual) { StringBuilder elemento = new StringBuilder(); elemento.append(APERTURA).append("\n"); elemento.append(formatearJson("año", fechaActual.getYear())); elemento.append(formatearJson("mes", fechaActual.getMonth())); elemento.append(formatearJson("día", fechaActual.getDayOfMonth())); elemento.append(CIERRE ).append("\n"); return elemento.toString(); } public static String formatearJson(String llave, Object valor) { return String.format("\"%s\": \"%s\",\n", llave, valor); }}
Si nos fijamos lo primero que hacemos es definir en unas variables el inicio y cierre de nuestro JSON, esto con la finalidad de tenerlos apartados y también tener la posibilidad de editarlos en algún momento de requerirlo.

Luego vamos a crear nuestro método main donde llamamos a nuestro método principal que nos retorna el JSON generado, este método es el que va a tomar los datos de la fecha y va a hacer el llamado a un tercer método que se va a encargar de darle el formato necesario a cada elemento dentro de nuestro JSON.

Importante
La idea detrás del JSON es que cada llave o clave tenga un valor asignado, y que todos ellos estén dentro de una estructura de llaves.

Si compilamos nuestro archivo y luego lo ejecutamos, obtendremos por consola el formato JSON de forma correcta, esto lo podemos ver en la siguiente imagen:


java-json.jpg



Herramientas adicionales


Lo anterior a pesar que no está mal necesita mucho trabajo para poder sacar elementos que sean válidos en JSON, es por ello que contamos con algunas herramientas que nos pueden ayudar a mejorar el procesamiento y generación de este tipo de documentos.

La más avanzada hasta el momento es Jackson, es una herramienta de terceros que podemos descargar e incorporarla a nuestros proyectos, nos permite crear los elementos de una forma tan sencilla como la siguiente:
String jsonInput ="{\"id\":0,\"nombre\":\"Ramon\",\"Apellido\":\"Perez\"}";Persona q = mapper.readValue(jsonInput, Persona.class);System.out.println("Lectura desde JSON: " + q);
Como vemos es algo mucho más resumido que la parte totalmente manual que desarrollamos al inicio.

La siguiente herramienta es org.json que no es tan avanzada como Jackson sin embargo nos da un poco más de forma para generar nuestros documentos JSON, la idea acá es no gastar energía pensando desde el nivel de Java en como ordenar el documento pero dedicarle un poco más de energía a como presentar la información desde el enfoque JSON.

Un ejemplo aplicando esta herramienta puede ser como el siguiente:
JSONObject jsonObject = new JSONObject();jsonObject.put("Nombre", "Ramon Perez").put("País", "España").put("Edad", "24");String documento = jsonObject.toString();System.out.println(documento);
Como vemos no tuvimos que generar etiquetas de cierre o de apertura, y tampoco tuvimos que hacer escapes para las diferentes cadenas de texto.

XML


El formato XML es un viejo conocido para muchos y para otros puede verse como algo en desuso, pero la realidad es que tiene mucha vigencia aún y quizás en el futuro. Uno de sus campos de aplicaciones actuales es en las aplicaciones Android por lo que seguramente lo hemos visto o lo veremos.

Estructura y generación
Su estructura consiste en etiquetas al estilo HTML, sin embargo a diferencia del último las etiquetas necesitan un cierre explicito, y podemos definirlas con los nombres y atributos que deseemos. Una de las formas más sencillas que tenemos para generar contenido XML en Java es a través de DOM, con ello podremos hacer un árbol y luego con TransformerFactory podemos lograr el resultado adecuado.

Al igual que en el caso de JSON este método es un poco rudimentario pero nos sirve para demostrar como desde Java podemos lograr los objetivos propuestos. Veamos en el siguiente código de ejemplo como podemos hacer un documento XML a partir de un DOM.
package xml;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Node;import javax.xml.transform.*;import javax.xml.transform.dom.*;import javax.xml.transform.stream.*;public class XmlManual { public static void main(String[] av) throws Exception { Document doc = generarDocumento(); System.out.println("Iniciando el documento"); Transformer tx = TransformerFactory.newInstance().newTransformer(); tx.setOutputProperty(OutputKeys.INDENT, "yes"); tx.transform(new DOMSource(doc), new StreamResult(System.out));} public static Document generarDocumento() { try { DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance(); DocumentBuilder parser = fact.newDocumentBuilder(); Document documento = parser.newDocument(); Node root = documento.createElement("Persona"); documento.appendChild(root); Node cuerpo = documento.createElement("Estudiante"); root.appendChild(cuerpo); Node line = documento.createElement("España"); cuerpo.appendChild(line); cuerpo.appendChild(line); line.appendChild(documento.createTextNode("Otro contenido")); return documento; } catch (Exception ex) { System.err.println("Ha Ocurrido un error: "); System.err.println(ex.getClass()); System.err.println(ex.getMessage()); return null; } }}
Con este ejercicio podemos obtener un entendimiento un poco más avanzado de lo que significa incorporar formatos como XML en el mundo de Java.

Otras herramientas


Al ser un formato con tanta historia y utilidad hace que sea factible encontrar muchas herramientas diseñadas para el lenguaje, es por ello que basta con solo pasearse un poco por Google para encontrar algunas joyas que pueden hacer nuestra vida más sencilla.

Entre estas herramientas encontramos:
  • SAX
  • XSLT
  • JAXB
La tarea que dejamos es que investiguen sobre estas herramientas, ya con el conocimiento adquirido acá podrán aumentar la funcionalidad y versatilidad de sus aplicaciones utilizando estos formatos de documentos.

Es importante no dejar de practicar para poder asimilar todo este conocimiento, y buscar las mínimas oportunidades para implementar nuestras soluciones a los desarrollos. Con esto finalizamos este tutorial, ya hemos aprendido de forma básica pero bastante completa como podemos construir JSON y XML en nuestros programas escritos en Java.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X