Dans JAX-RS 2.1, la bibliothèque interne Jackson utilisée pour la sérialisation et la désérialisation entre les objets JSON et Java a été remplacée par Yasson. Yasson est l'implémentation de référence de JSON-B. Jackson et Yasson sérialisent différemment les objets liés au temps. Par exemple :
| 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] |
Les méthodes de ressource JAX-RS qui génèrent ou consomment des données de type JSON peuvent être affectées. Cette règle marque les zones java.util.Date ou java.util.Calendar contenues dans un objet généré ou consommé par une méthode de ressource JAX-RS.
Voici un exemple de méthodes de ressource JAX-RS qui génèrent et consomment un objet Java contenant une zone java.util.Date et une zone 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; } |
La règle marque les zones java.util.Date et java.util.Calendar dans l'objet DataObject. Un
correctif rapide est disponible pour cette règle dans le scanner de source. Le correctif rapide ajoute
@JsonbDateFormat(value = JsonbDateFormat.TIME_IN_MILLIS) aux zones, qui convertit la sortie en millisecondes. Une fois que le correctif rapide a été exécuté, la classe DataObject est remplacée par :
|
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; } |
Remarque : Pour accéder à l'annotation @javax.json.bind.annotation.JsonbDateFormat
ajoutée par le correctif rapide, vous devez ajouter la fonction jsonb à votre fichier de configuration Liberty
server.xml. Par exemple, ajoutez la fonction jsonb-1.0 si vous utilisez la fonction
jaxrs-2.1.
Pour plus d'informations sur les différences de comportement entre Jackson et Yasson, consultez l'article Is it time for a JSON binding standard? qui compare les comportements de Jackson et JSON-B.