5 votes

Jackson ObjectMapper : Est-ce que java.util.Set est sérialisé en tableau json dans l'ordre croissant trié ?

Il existe une fonction de mappeur d'objets permettant de sérialiser les cartes triées par clés de carte, mais rien n'est dit sur les ensembles java. Si je stocke des éléments dans un java.util.Set dans mon POJO, est-ce que l'ObjectMapper de Jackson les sérialisera dans le tableau json dans n'importe quel ordre ?

Si ce n'est pas le cas, je pense écrire un sérialiseur personnalisé pour l'ensemble à cette fin - y a-t-il un meilleur moyen que quelqu'un peut suggérer ?

Mise à jour :

En fin de compte, le but est de désérialiser un tableau d'entiers uniques dans une sorte de conteneur dans un pojo "request". Puis de traiter la requête et de passer ce champ d'entrée dans le champ de sortie correspondant (inchangé) dans un objet "response".

J'aimerais stocker les données dans les POJO en tant que java.util.Set pour satisfaire tous les utilisateurs (si vous essayez de les stocker en tant que sous-type de Set, les consommateurs de l'interface du POJO pourraient être contrariés de ne pas pouvoir obtenir un Set mais de devoir s'attendre à un HashSet ou un TreeSet).

Cela fonctionnera-t-il ?

  1. Le tableau json [5,4,3,2,1] est désérialisé en Set MAIS, j'utilise @JsonDeserialize(as=TreeSet.class) sur la méthode setter. Ainsi, le type d'exécution de l'objet est maintenant un TreeSet (même s'il est stocké dans le POJO en tant que Set).
  2. Le Set est transmis par le serveur et finit par être stocké dans le POJO de la réponse (le type d'exécution est toujours TreeSet, même si le type de champ du POJO est Set).
  3. ObjectMapper sérialise un TreeSet en un tableau json [1,2,3,4,5] (car le TreeSet est naturellement trié).

Le point 3 ci-dessus est celui sur lequel je m'interroge - ObjectMapper utilisera-t-il le type d'exécution du champ du POJO, ou le type déclaré ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X