El enlace JSON para los tipos de fecha y calendario debe convertirse

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.