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; } }
Vous pouvez ensuite utiliser cette personnalisation Stratégie d'exclusion dans votre GsonBuilder :
Gson gson = new GsonBuilder() .setExclusionStrategies(new CustomExclusionStrategy("country.name")) .create();
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!