J'essaie d'apprendre Gson et je lutte contre l'exclusion de terrain. Voici mes cours
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 une ExclusionStrategy pour un nom de champ comme firstName
ou country
mais je n'arrive pas à exclure les propriétés de certains champs comme country.name
.
En utilisant 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
.
PS: Je veux éviter les annotations car je veux améliorer cela et utiliser RegEx pour filtrer les champs.
Edit : j'essaie de voir s'il est possible d'émuler le comportement du plugin Struts2 JSON
en utilisant 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 deuxième champ avec le même type pour clarifier ce problème. Fondamentalement, je veux exclure country.name
mais pas countrOfBirth.name
. Je ne veux pas non plus exclure Country en tant que type. Donc, les types sont les mêmes, c'est la place réelle dans le graphique d'objet que je veux localiser et exclure.
JsonSerializer
pour un certain type - Country
dans votre cas - pour laquelle est ensuite appliqué un ExclusionStrategy
qui décide quels champs à sérialiser.