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:
Y el resultado es:
Adicionalmente, podemos usar el parámetro
El resultado es sorprendente:
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" }
Comentarios
Publicar un comentario
Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups
Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/