En JAX-RS 2.1, la biblioteca interna utilizada para la serialización y la deserialización entre objetos JSON y Java ha cambiado de Jackson a Yasson. Yasson es la implementación de referencia de JSON-B. Jackson y Yasson serializarán los objetos relacionados con el tiempo de distintas formas, por ejemplo:
| Jackson | Yasson | |
|---|---|---|
| java.util.Date | 726213720000 | 1993-02-05T06:02:00Z[UTC] |
| java.util.Calendar | 726213720000 | 1993-02-05T00:00:00-06:00[America/Chicago] |
Se pueden realizar los métodos de recursos JAX-RS que producen o consumen datos de tipo JSON. Esta regla marca los campos java.util.Date o java.util.Calendar que están contenidos en un objeto producido o consumido por un
método de recurso JAX-RS.
A continuación se muestra un ejemplo de los métodos de recursos JAX-RS que producen y consumen un objeto Java que contiene un campo java.util.Date y java.util.Calendar:
|
@Path("/") @ApplicationScoped public class MyService { @GET @Path("/get") @Produces(MediaType.APPLICATION_JSON) public DataObject getData() { //... } @GET @Path("/set") @Consumes(MediaType.APPLICATION_JSON) public void setData(DataObject data) { //... } } |
|
import java.util.Calendar; import java.util.Date; public class DataObject { public Date juDate; public Calendar juCalendar; } |
La regla señalará los campos java.util.Date y java.util.Calendar en el objeto DataObject. En el explorador de orígenes, hay un arreglo rápido para esta regla. El arreglo rápido añade
a los campos un @JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS) que convierte la salida en milisegundos epoch. Después de que se haya ejecutado el arreglo rápido, la clase DataObject cambiará a:
|
import java.util.Calendar; import java.util.Date; import javax.json.bind.annotation.JsonbDateFormat; public class DataObject { @JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS) public Date juDate; @JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS) public Calendar juCalendar; } |
Nota: para acceder a la anotación @javax.json.bind.annotation.JsonbDateFormat
añadida por el arreglo rápido, tendrá que añadir la característica jsonb al archivo de configuración
server.xml de Liberty. Por ejemplo, añada la característica jsonb-1.0 si está utilizando la
característica jaxrs-2.1.
Para obtener más detalles sobre las diferencias de comportamiento entre Jackson y Yasson, consulte el artículo Is it time for a JSON binding standard? que compara el comportamiento de Jackson y JSON-B.