Maison > Java > javaDidacticiel > Comment exclure les champs Gson sans annotations ?

Comment exclure les champs Gson sans annotations ?

Mary-Kate Olsen
Libérer: 2024-12-05 19:30:15
original
843 Les gens l'ont consulté

How to Exclude Gson Fields Without Annotations?

Exclusion de champs Gson sans annotations

Dans Gson, vous pouvez exclure des champs spécifiques de la sérialisation sans utiliser d'annotations. Explorons une approche alternative en utilisant la méthode GsonBuilder.setExclusionStrategies().

L'interface ExclusionStrategy vous permet de contrôler quels champs sont exclus ou inclus lors de la sérialisation. Cependant, les informations FieldAttributes fournies peuvent ne pas être suffisantes pour identifier des chemins de champ spécifiques.

Pour résoudre ce problème, envisagez d'étendre l'interface ExclusionStrategy et de définir vos propres critères d'exclusion. Vous pouvez utiliser des expressions régulières pour faire correspondre des chemins de champ spécifiques et les exclure en conséquence. Cette approche offre une plus grande flexibilité dans la spécification des champs à exclure.

Voici un exemple de la façon dont vous pouvez réaliser une exclusion de champ en fonction d'un chemin de champ :

import com.google.gson.ExclusionStrategy;
import com.google.gson.FieldAttributes;

public class CustomExclusionStrategy implements ExclusionStrategy {

    private String[] excludedPaths;

    public CustomExclusionStrategy(String[] excludedPaths) {
        this.excludedPaths = excludedPaths;
    }

    @Override
    public boolean shouldSkipField(FieldAttributes fieldAttributes) {
        for (String excludedPath : excludedPaths) {
            if (fieldAttributes.getDeclaringClass().getName() + "." + fieldAttributes.getName().equals(excludedPath)) {
                return true;
            }
        }
        return false;
    }

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

Vous pouvez ensuite utiliser cette personnalisation Stratégie d'exclusion dans votre GsonBuilder :

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

Cette approche vous permet d'exclure des chemins de champ spécifiques, tels que "country.name", lors de la sérialisation. Vous pouvez étendre cette stratégie pour prendre en charge des critères d'exclusion plus complexes si nécessaire.

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