domingo, 27 de diciembre de 2015

Convertir de Objeto Java a XML o JSON

Ya hemos hablado con anterioridad de las JAXB, para los prototipos de WebService. Ahora haremos un par de sencillos ejemplos que nos permitan cambiar de objeto java (POJO) a XML o JSON.

Por un lado tenemos que añadirle al objeto Java las etiquetas JAXB. Estas nos permiten indicar que será un objeto que podremos tratar con la librería. Ejemplo:
@XmlRootElement
public class ObjetoPlano {
 private String cadena;
 private int entero;
//...
}
En un primer momento solo nos hará falta poner la etiqueta '@XmlRootElement'. En caso de que quisiéramos que las etiquetas tuvieran un valor diferente al nombre de la variable podemos usar '@XmlElement'. Además de estas dos, que son las más básicas hay otras más que permite realizar una generación más específica: @XmlSchema, @XmlType, etc. Una etiqueta interesante es '@XmlTransient' que nos permite no generar dicho atributo.

En el caso de que incluyamos objetos planos dentro de otros, es necesario que estos objetos internos esten correctamente configurado mediante anotaciones, para que la transformación sea correcta.

A continuación vamos a mostrar como realizar la conversión. Esta conversión la podemos realizar a cualquier 'OutputStream' (desde un objeto java a un fichero de lectura, en nuestro caso a la consola de salida). Por defecto la conversión se realiza en formato XML.
JAXBContext jc = JAXBContext.newInstance(ObjetoPlano.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(objeto, System.out);
En el caso de que lo que queramos sea generar un JSON, simplemente debemos hacer lo siguiente:
ObjetoPlano objeto = new ObjetoPlano("cadena", 1);
JAXBContext jc = JAXBContext.newInstance(ObjetoPlano.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(MarshallerProperties.MEDIA_TYPE, "application/json");
marshaller.marshal(objeto, System.out);
Para este último caso tendremos que añadir las dependencias de 'eclipselink' para su correcto funcionamiento.

No hay comentarios:

Publicar un comentario