Sto cercando di imparare Gson e sto lottando con l'esclusione sul campo. Ecco le mie lezioni
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;
}
Posso usare GsonBuilder e aggiungere una ExclusionStrategy per un nome di campo come firstName
o country
ma non riesco a riuscire a escludere proprietà di determinati campi come country.name
.
Utilizzando il metodo public boolean shouldSkipField(FieldAttributes fa)
, FieldAttributes non contiene informazioni sufficienti per abbinare il campo a un filtro come country.name
.
PS: Voglio evitare le annotazioni poiché voglio migliorare questo aspetto e utilizzare RegEx per filtrare i campi.
Modifica : sto cercando di vedere se è possibile emulare il comportamento del plug-in JSON di Struts2
usando Gson
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
Modifica: ho riaperto la domanda con la seguente aggiunta:
Ho aggiunto un secondo campo con lo stesso tipo per chiarire ulteriormente questo problema. Fondamentalmente voglio escludere country.name
ma non countrOfBirth.name
. Inoltre, non voglio escludere Paese come tipo. Quindi i tipi sono gli stessi, è il posto effettivo nel grafico a oggetti che voglio individuare ed escludere.
JsonSerializer
per un certo tipo - Country
nel tuo caso - per cui quindi viene applicato un ExclusionStrategy
che decide quali campi serializzare.