A ligação do JSON para tipos de data e calendário deve ser convertida

No JAX-RS 2.1, a biblioteca interna usada para serialização e desserialização entre objetos JSON e Java foi mudada de Jackson para Yasson. Yasson é a implementação de referência de JSON-B. O Jackson e o Yasson serializarão objetos relacionados ao tempo de diferentes maneiras, por exemplo:

Jackson Yasson
java.util.Date 726213720000 1993-02-05T06:02:00Z [ UTC ]
java.util.Calendar 726213720000 1993-02-05T00:00:00-06:00 [ América/Chicago ]

Quaisquer métodos de recurso JAX-RS que produzem ou consomem dados de tipo JSON podem ser afetados. Essa regra sinaliza quaisquer campos java.util.Date ou java.util.Calendar que estão contidos em um objeto produzido ou consumido por um método de recurso JAX-RS.

A seguir está um exemplo de métodos de recurso JAX-RS que produzem e consomem um Objeto Java contendo um campo java.util.Date e java.util.Calendar:

< span class="Code"> @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) {
//...
}
}
< span class="Code"> < span class= "JavaKeyword"> import < /span> java.util.Calendar;
import java.util.Date;

public class DataObject {
public Date juDate;
public Calendar juCalendar;
}

Essa regra sinaliza os java.util.Date e java.util.Calendar no objeto DataObject objeto. Para essa regra, será fornecida uma correção automatizada para adicionar a anotação @JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS ) a esses campos para converter a saída em época milliseconds.After a correção automatizada é aplicada, a classe DataObject será atualizada da seguinte forma:

< span class="Code"> < span class= "JavaKeyword"> import < /span> 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;
}

Observação: Para acessar o @javax.json.bind.annotation.JsonbDateFormat a anotação será adicionada pela correção automatizada. A correção automatizada adicionará o recurso jsonb ao seu arquivo de configuração Liberty server.xml arquivo de configuração. Por exemplo, inclua o recurso jsonb-1.0 se você estiver usando o recurso jaxrs-2.1.

Para obter mais detalhes sobre as diferenças de comportamento entre o Jackson e o Yasson, consulte o artigo É o momento para um padrão de ligação JSON? comparando o comportamento do Jackson e do JSON-B.