Maison > Java > javaDidacticiel > Comment exclure des champs spécifiques de la sérialisation Gson sans annotations ?

Comment exclure des champs spécifiques de la sérialisation Gson sans annotations ?

Patricia Arquette
Libérer: 2024-12-09 00:51:10
original
182 Les gens l'ont consulté

How to Exclude Specific Fields from Gson Serialization without Annotations?

Gson : Exclusion de champs spécifiques de la sérialisation sans annotations

Exclusion de champs spécifiques de la sérialisation Gson sans annotations peut être délicate. Voici comment y parvenir à l'aide d'une ExclusionStrategy personnalisée :

Custom ExclusionStrategy

Gson fournit une interface ExclusionStrategy qui vous permet de personnaliser la façon dont les champs sont exclus. Créez une implémentation de cette interface :

public class FieldExclusionStrategy implements ExclusionStrategy {

    private Pattern pattern;

    public FieldExclusionStrategy(String regex) {
        pattern = Pattern.compile(regex);
    }

    @Override
    public boolean shouldSkipField(FieldAttributes fa) {
        String fieldName = fa.getName();
        return pattern.matcher(fieldName).matches();
    }

    @Override
    public boolean shouldSkipClass(Class<?> clazz) {
        return false;
    }
}
Copier après la connexion

Personnalisation de l'exclusion

Dans l'exemple fourni, ExclusionStrategy exclut les champs en fonction d'une expression régulière donnée. Vous pouvez personnaliser le modèle pour qu'il corresponde aux champs que vous souhaitez exclure, tels que country.name.

Utilisation de la stratégie d'exclusion

Une fois la stratégie d'exclusion définie, utilisez-la lors de la configuration le GsonBuilder :

Gson gson = new GsonBuilder()
    .setExclusionStrategies(new FieldExclusionStrategy("country.name"))
    .create();
Copier après la connexion

Utilisation Exemple

Après avoir configuré Gson, vous pouvez sérialiser votre objet Student comme suit :

String json = gson.toJson(student);
Copier après la connexion

Cela exclura le champ country.name de la sortie JSON sérialisée.

Notes supplémentaires

  • Si vous souhaitez exclure des champs en fonction d'autres critères (comme le type ou les annotations), vous pouvez modifier les méthodes ShouldSkipField et ShouldSkipClass en conséquence.
  • Pour les champs du même type, la règle d'exclusion s'applique toujours au chemin de champ spécifique. Dans ce cas, countryOfBirth.name ne sera pas exclu.
  • Pour exclure un type entier, remplacez la méthode ShouldSkipClass dans ExclusionStrategy.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal