W usługach JAX-RS 2.1 wewnętrzna biblioteka używana do przekształcania do i z postaci szeregowej między obiektami JSON i Java została zmieniona z Jackson na Yasson. Yasson jest implementacją odwołania JSON-B. Biblioteki Jackson i Yasson przekształcą obiekty związane z czasem na różne sposoby, na przykład:
| Jackson | Yasson | |
|---|---|---|
| java.util.Date | 726213720000 | 1993-02-05T06:02:00Z[UTC] |
| java.util.Calendar | 726213720000 | 1993-02-05T00:00:00-06:00[Ameryka/Chicago] |
Może dotyczyć dowolnych metod zasobów JAX-RS, które generują i pobierają dane
typu JSON. Ta reguła oznacza flagą wszystkie pola java.util.Date
lub java.util.Calendar zawarte w obiekcie generowanym lub
pobieranym przez metodę zasobu JAX-RS.
Poniżej znajduje się przykład metod zasobów JAX-RS, które generują i pobierają
obiekt Java zawierający pole java.util.Date i
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; } |
Reguła spowoduje oznaczenie flagą pól java.util.Date oraz
java.util.Calendar w obiekcie DataObject. W skanerze kodu źródłowego dostępna jest szybka poprawka dla tej reguły. Szybka poprawka dodaje do
pól adnotację @JsonbDateFormat(value =
JsonbDateFormat.TIME_IN_MILLIS), która przekształca dane wyjściowe w
milisekundy epoki. Po uruchomieniu szybkiej poprawki klasa DataObject zostanie
zmieniona na:
|
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; } |
Uwaga: aby uzyskać dostęp do adnotacji
@javax.json.bind.annotation.JsonbDateFormat dodanej przez szybką
poprawkę, należy dodać składnik jsonb do pliku konfiguracyjnego
server.xml produktu Liberty. Należy na przykład dodać składnik
jsonb-1.0 w przypadku korzystania ze składnika
jaxrs-2.1.
Aby uzyskać więcej szczegółów na temat różnic w zachowaniu między specyfikacjami Jackson a Yasson, należy zapoznać się z informacjami na stronie Czy już czas na standard powiązań JSON? Artykuł porównujący zachowanie Jackson i JSON-B.