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:
|
@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; } |
A szabály meg fogja jelöli a java.util.Date és
java.util.Calendar mezőket a DataObject
objektumban. A forráselemzőben elérhető egy gyorsjavítás ehhez a
szabályhoz. A gyorsjavítás hozzáad egy @JsonbDateFormat(value =
JsonbDateFormat.TIME_IN_MILLIS) annotációt a mezőkhöz, ami
átalakítja a kimenetet a korszak kezdete óta eltelt ezredmásodpercekre. A
gyorsjavítás futtatása után a DataObject osztály a következőre változik:
|
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; } |
Megjegyzés: A gyorsjavítás által hozzáadott
@javax.json.bind.annotation.JsonbDateFormat annotáció
eléréséhez hozzá kell adnia a jsonb szolgáltatást a 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.