Maison >Java >javaDidacticiel >Comment puis-je appliquer sélectivement @JsonIgnore pour la sérialisation uniquement à Jackson ?

Comment puis-je appliquer sélectivement @JsonIgnore pour la sérialisation uniquement à Jackson ?

DDD
DDDoriginal
2024-11-28 11:09:13928parcourir

How Can I Selectively Apply @JsonIgnore for Serialization Only in Jackson?

Application sélective @JsonIgnore : sérialisation uniquement

Lorsque vous travaillez avec des données sensibles pendant la sérialisation et la désérialisation, il est souvent souhaitable d'exclure certaines propriétés de la transmission. L'annotation @JsonIgnore offre cette fonctionnalité, mais elle s'applique par défaut à la sérialisation et à la désérialisation. Pour les scénarios dans lesquels vous devez supprimer le chiffrement pour la sérialisation uniquement, voici comment y parvenir :

Solution dépendante de la version

Avant la version 1.9 de Jackson, vous pouviez restreindre @JsonIgnore aux méthodes getter pour activer la désérialisation tout en la désactivant pour la sérialisation. Cela signifiait annoter uniquement le getter avec @JsonIgnore.

Nouvelle approche pour Jackson 1.9

Dans les versions ultérieures de Jackson, l'annotation @JsonProperty offre une flexibilité supplémentaire. Pour appliquer @JsonIgnore uniquement à la sérialisation :

  1. Ajoutez @JsonIgnore au getter comme avant.
  2. Ajoutez @JsonProperty avec un nom de champ explicite à la méthode setter pour la propriété sensible, en garantissant la désérialisation fonctionne comme prévu.

Accès au niveau de la propriété Contrôle

Pour les versions avec l'annotation @JsonProperty.Access de Jackson, vous disposez d'une autre option :

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;

Cela permet la sérialisation du mot de passe mais empêche sa désérialisation, le sécurisant efficacement. Reportez-vous à la documentation de Jackson pour plus de détails.

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