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
Libérer: 2024-11-25 00:07:21
original
729 Les gens l'ont consulté

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;
Copier après la connexion
  • 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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal