Vazba JSON pro typy data a kalendáře musí být převedena

V rozhraní JAX-RS 2.1 se interní knihovna používaná pro serializaci a deserializaci mezi objekty JSON a objekty Java změnila z Jackson na Yasson. Yasson je implementace odkazů JSON-B. Jackson a Yasson budou serializovat objekty související s časem různými způsoby, např.:

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]

Veškeré metody prostředků JAX-RS, které produkují nebo spotřebovávají data typu JSON mohou být ovlivněny. Toto pravidlo označí veškerá pole java.util.Date nebo java.util.Calendar, která jsou obsaženy v objektu vytvořeném nebo spotřebovaném metodou prostředku JAX-RS.

Dále je uveden příklad metod prostředku JAX-RS, které vytvářejí a spotřebovávají objekt Java obsahující pole java.util.Date a 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;
}

Toto pravidlo označuje java.util.Date a java.util.Calendar pole v DataObject objektu. Pro toto pravidlo bude k dispozici automatická oprava, která přidá anotaci @JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS ) k těmto polím, aby se výstup převedl na epochu milliseconds.After automatická oprava se použije třída DataObject bude aktualizována takto:

< 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;
}

Poznámka: Pro přístup k @javax.json.bind.annotation.JsonbDateFormat bude přidána anotace automatickou opravou, Automatická oprava přidá funkci jsonb do vašeho počítače Liberty server.xml konfigurační soubor. Například přidejte funkci jsonb-1.0, používáte-li funkci jaxrs-2.1.

Další podrobnosti o rozdílech v chování mezi Jackson a Yason viz článek Je čas na standard vazby JSON? porovnávající chování Jackson a JSON-B.