Maison >Java >javaDidacticiel >Comment puis-je ignorer sélectivement les champs lors de la sérialisation JSON tout en autorisant la désérialisation ?

Comment puis-je ignorer sélectivement les champs lors de la sérialisation JSON tout en autorisant la désérialisation ?

DDD
DDDoriginal
2024-11-25 00:07:21679parcourir

How Can I Selectively Ignore Fields During JSON Serialization While Still Allowing Deserialization?

@JsonIgnore sélectif pour la sérialisation

Lors de l'utilisation de frameworks de sérialisation/désérialisation JSON, il peut être utile d'ignorer de manière sélective certains champs pour des opérations spécifiques. Dans le cas des mots de passe, il est souvent souhaitable de les exclure de la sortie sérialisée tout en permettant leur désérialisation.

Contexte fourni

L'objet utilisateur en cours de sérialisation et désérialisé a une propriété "mot de passe". @JsonIgnore a été appliqué à cette propriété pour l'empêcher d'être incluse dans les réponses JSON sérialisées. Cependant, cela bloque également la désérialisation d'un mot de passe, rendant l'inscription de l'utilisateur impossible.

Solution

Spring JSONView, qui utilise Jackson en interne, fournit diverses méthodes pour contrôler la sérialisation/ désérialisation. Pour ce scénario spécifique, deux approches sont recommandées :

Jackson Versions < 1.9

  • Annoter la méthode getter : Ajoutez @JsonIgnore à la méthode getter de mot de passe. Cela peut empêcher la sérialisation du mot de passe sans affecter la désérialisation.

Jackson Versions >= 1.9

  • Arguments d'annotation ReadWrite : Utilisez JsonProperty avec des arguments d'accès pour spécifier un accès en lecture ou en écriture seule. Par exemple :
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
  • Annotation Setter : Annotez la méthode setter pour la propriété password avec @JsonProperty sans spécifier d'argument d'accès. Cela indiquerait que la propriété est en écriture seule.

Notes supplémentaires

Cette solution cible spécifiquement l'exclusion sélective pour la sérialisation tout en autorisant la désérialisation. Pour d'autres scénarios où le masquage de désérialisation est souhaité, des approches alternatives peuvent être nécessaires.

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