Maison >Java >javaDidacticiel >Comment puis-je empêcher Jackson de sérialiser des champs nuls en Java ?

Comment puis-je empêcher Jackson de sérialiser des champs nuls en Java ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-25 14:36:13735parcourir

How Can I Prevent Jackson from Serializing Null Fields in Java?

Suppression de la sérialisation des champs nuls avec Jackson

Jackson est une bibliothèque de liaison de données Java populaire qui gère la sérialisation et la désérialisation entre les objets Java et JSON. Par défaut, Jackson sérialisera tous les champs non nuls d'un objet. Cependant, il peut y avoir des scénarios dans lesquels vous souhaitez ignorer certains champs lors de la sérialisation si leurs valeurs sont nulles.

Utilisation de l'annotation @JsonInclude

Jackson 2.0 et versions ultérieures introduit le @ Annotation JsonInclude, qui vous permet de spécifier quand un champ doit être inclus ou exclu lors de la sérialisation. Pour ignorer un champ si sa valeur est nulle, utilisez la valeur Include.NON_NULL :

@JsonInclude(Include.NON_NULL)
public class SomeClass {
  private String someValue;
}

Avec cette annotation appliquée au champ, Jackson ignorera le champ someValue lors de la sérialisation s'il est nul.

Modification de la configuration de l'ObjectMapper

Vous pouvez également configurer l'ObjectMapper directement pour supprimer le sérialisation des valeurs nulles. Pour ce faire, utilisez la méthode setSerializationInclusion avec la valeur Include.NON_NULL :

mapper.setSerializationInclusion(Include.NON_NULL);

Cela demandera à Jackson d'ignorer tous les champs nuls lors de la sérialisation pour tous les objets mappés par le mappeur.

Utilisation de @JsonInclude dans Getters

Une autre option consiste à utiliser le @JsonInclude annotation dans la méthode getter pour un champ. Cela vous permet de contrôler l'inclusion ou l'exclusion d'un champ en fonction de la valeur renvoyée. Par exemple :

public class SomeClass {
  private String someValue;
  
  @JsonInclude(JsonInclude.Include.NON_NULL)
  public String getSomeValue() {
    return someValue;
  }
}

Dans ce cas, le champ someValue ne sera inclus lors de la sérialisation que si la méthode getter renvoie une valeur non nulle.

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