Contrôle de la sérialisation et de la désérialisation JSON avec @JsonIgnore
Dans les applications Spring JSONView, personnaliser la façon dont les propriétés sont sérialisées et désérialisées peut s'avérer difficile. Un scénario courant est celui où nous souhaitons exclure des données sensibles telles que des mots de passe hachés lors de la sérialisation tout en pouvant les désérialiser.
Pour y parvenir, nous utilisons l'annotation @JsonIgnore sur la propriété password. Cependant, cela peut également empêcher la désérialisation de la propriété, ce qui rend l'inscription des utilisateurs difficile lorsqu'ils n'ont pas de mot de passe existant.
La solution dépend de la version de Jackson utilisée. Avant la version 1.9, nous pouvions utiliser @JsonIgnore uniquement sur la méthode getter. Pour les versions plus récentes, nous ajoutons les annotations suivantes :
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY) : Cette annotation sur la méthode setter permet la sérialisation mais bloque la désérialisation.
Alternativement, l'utilisation de l'argument de type d'accès READ_ONLY de @JsonProperty permet également d'obtenir this :
@JsonProperty(access = JsonProperty.Access.READ_ONLY) private String password;
Ces annotations garantissent que la propriété du mot de passe n'est sérialisée que lors de la conversion JSON mais peut toujours être désérialisée lors de la création de l'objet.
En suivant ces techniques, nous pouvons contrôler sélectivement la sérialisation JSON et désérialisation des propriétés sensibles, offrant flexibilité et sécurité dans les applications Web.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!