Gson: Comment exclure des domaines spécifiques de la Sérialisation sans annotations

J'essaie d'apprendre à Gson et j'ai du mal avec le champ de l'exclusion. Voici mes classes

public class Student {    
  private Long                id;
  private String              firstName        = "Philip";
  private String              middleName       = "J.";
  private String              initials         = "P.F";
  private String              lastName         = "Fry";
  private Country             country;
  private Country             countryOfBirth;
}

public class Country {    
  private Long                id;
  private String              name;
  private Object              other;
}

Je peux utiliser le GsonBuilder et ajouter un ExclusionStrategy pour un nom de champ comme firstName ou country mais je n'arrive pas à gérer exclure des propriétés de certains domaines, comme la country.name.

À l'aide de la méthode public boolean shouldSkipField(FieldAttributes fa), FieldAttributes ne contient pas suffisamment d'informations pour faire correspondre le champ avec un filtre comme country.name.

Je vous serais reconnaissant de toute aide à une solution à ce problème.

P. S: je veux éviter les annotations depuis je veux améliorer sur ce point et utiliser des RegEx pour filtrer les trames.

Merci

Modifier: je suis en train de voir si il est possible d'émuler le comportement de Struts2 JSON plugin

à l'aide de Gson

<interceptor-ref name="json">
  <param name="enableSMD">true</param>
  <param name="excludeProperties">
    login.password,
    studentList.*\.sin
  </param>
</interceptor-ref>

Edit:
J'ai rouvert la question avec l'ajout suivant:

J'ai ajouté un second champ avec le même type de plus de clarifier ce problème. Fondamentalement, je veux exclure country.name mais pas countrOfBirth.name. Aussi, je ne veux pas exclure Pays comme un type.
Si les types sont les mêmes, c'est la place réelle dans l'objet graphique que je veux d'identifier et d'exclure.

  • Toujours à partir de la version 2.2, je ne peux pas spécifier un chemin d'accès à exclure. flexjson.sourceforge.net se sent comme une bonne alternative.
  • Jetez un oeil sur ma réponse pour un tout à fait une question similaire. Il est basé sur la création d'une coutume JsonSerializer pour certains typeCountry dans votre cas pour ce qui est ensuite appliqué une ExclusionStrategy qui décide quels sont les champs à sérialiser.
  • stackoverflow.com/questions/3544919/...
InformationsquelleAutor Liviu T. | 2011-01-26