A dátum- és naptártípusok JSON kötését át kell alakítani

A JAX-RS 2.1 megvalósításban a belső függvénytár kerül felhasználásra a Jackson helyett Yassont használó JSON és Java objektumok közötti sorosításra és visszafejtésre. A Yasson a JSON-B referencia megvalósítása. A Jackson és a Yasson különbözőképpen fogja sorosítani az idővel kapcsolatos objektumokat, például:

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]

Bármely JAX-RS erőforrás-módszer, amely JSON típusú adatokat állít elő vagy fogyaszt, érintett lehet. Ez a szabály megjelöli a java.util.Date vagy java.util.Calendar mezőket, amelyek egy JAX-RS erőforrás-módszer által előállított vagy fogyasztott objektumban vannak.

A következő példa egy JAX-RS erőforrás-módszert mutat be, amely egy java.util.Date és java.util.Calendar mezőt tartalmazó Java objektumot állít elő és fogyaszt:

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

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

Ez a szabály jelzi a java.util.Date és java.util.Calendar mezőkre a DataObject objektumot. Ehhez a szabályhoz egy automatikus javítást biztosítunk a megjegyzés hozzáadásához : @JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS ) ezekhez a mezőkhöz, hogy a kimenetet epochává konvertálja milliseconds.After az automatikus javítást a DataObject osztály alkalmazza osztály a következőképpen frissül:

class="Code"> \t type = "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;
}

Megjegyzés: A @javax.json.bind.annotation.JsonbDateFormat megjegyzést az automatizált javítás adja hozzá, Az automatizált javítás hozzáadja a jsonb funkciót az Ön Liberty server.xml konfigurációs fájlhoz. Például adja hozzá a jsonb-1.0 szolgáltatást, ha a jaxrs-2.1 szolgáltatást használja.

A Jackson és a Yasson viselkedés közötti különbségekkel kapcsolatos további részleteket a Jackson és JSON-B viselkedést összehasonlító Itt az ideje a JSON összerendelési szabvány használatának? című cikkben talál.