Maison  >  Article  >  Java  >  Comment puis-je utiliser @JsonIgnore pour contrôler la sérialisation sans bloquer la désérialisation ?

Comment puis-je utiliser @JsonIgnore pour contrôler la sérialisation sans bloquer la désérialisation ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-26 03:15:17942parcourir

How Can I Use @JsonIgnore to Control Serialization Without Blocking Deserialization?

Annotation JsonIgnore pour une sérialisation et une désérialisation contrôlées

Lorsque vous traitez des données sensibles dans des objets utilisateur, il est essentiel d'empêcher leur exposition pendant la sérialisation. L'annotation @JsonIgnore sert à cet effet, mais peut bloquer par inadvertance la désérialisation.

Problème de désérialisation avec @JsonIgnore

Dans ce scénario, l'annotation @JsonIgnore sur la propriété password empêche sa sérialisation au client. Cependant, cela empêche également la désérialisation de la propriété avec le mot de passe correct, ce qui rend les inscriptions difficiles.

Solution pour l'ignorance sélective

Selon la version de Jackson, deux approches peuvent être utilisé :

Versions Jackson antérieures à 1.9 :

  • Ajoutez @JsonIgnore à la méthode getter uniquement.
  • Ajoutez une annotation @JsonProperty spécifique avec le nom du champ JSON à la méthode de définition du mot de passe.

Jackson versions 1.9 et ci-dessus :

  • Ajoutez @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) au champ de mot de passe de la classe.

Exemple de code :

En Java :

@JsonIgnore(serialize = true, deserialize = false)
private String password;

@JsonProperty("password")
private void setPassword(String password) {
    this.password = password;
}

Cette approche permet @JsonIgnore à appliquer uniquement lors de la sérialisation, permettant au mot de passe d'être correctement désérialisé tout en le protégeant d'une exposition involontaire.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn