Header Ads

Último minuto

Java EE 8 - Json Binding

Una de las nuevas características de Java EE 8 es el api de JSON-B, o Json Binding, que consiste en mapear cada entrada de un dato json a un objeto java.

Aquí unos ejemplos:

De cadena json a objeto

Considerando que existe una clase Libro con algunas propiedades, podemos convertir rápidamente de una cadena a un objeto, siempre y cuando las propiedades coincidan. Si no coincide un atributo del json con un campo del objeto, lo pondrá nulo.

        String json = "{\"nombre\":\"Los gatos caen de pie\",\"anio\":1234 }";

        Libro libro = JsonbBuilder.create().fromJson(json, Libro.class);
        System.out.println("libro:" + libro);


Y el resultado es:

libro:Libro{nombre=Los gatos caen de pie, anio=1234, isbn=null, fechaPublicacion=null}

De objeto a cadena json

Esta es otra forma muy útil. Primero instanciaremos nuestro objeto, y luego lo convertiremos:
        Libro libro = new Libro();
        libro.setAnio(2014);
        libro.setNombre("Los gatos no ladran");
        libro.setIsbn("123-456-789");
        libro.setFechaPublicacion(new Date());
        libro.setPrecio(13456.0);

        String json = JsonbBuilder.create(config).toJson(libro);

        System.out.println("json:" + json);



Adicionalmente, podemos usar el parámetro config para definir cómo será el json resultante:
        config = new JsonbConfig()
                .withFormatting(true)
                .withDateFormat("dd-MMMM-yyyy", Locale.getDefault())
                .withPropertyNamingStrategy(PropertyNamingStrategy.LOWER_CASE_WITH_UNDERSCORES);



El resultado es sorprendente:

--- tojson ---
json:
{
    "anio": 2014,
    "fecha_publicacion": "20/11/2017",
    "isbn": "123-456-789",
    "nombre": "Los gatos no ladran",
    "valor": "13,456.00000"
}

Código fuente

El código fuente del proyecto lo pueden descargar de aquí: