Estou tentando aprender Gson e estou lutando com a exclusão de campo. Aqui estão minhas aulas
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 usar o GsonBuilder e adicionar uma ExclusionStrategy para um nome de campo como firstName
ou country
mas não consigo excluir propriedades de determinados campos como country.name
.
Usando o método public boolean shouldSkipField(FieldAttributes fa)
, FieldAttributes não contém informações suficientes para combinar o campo com um filtro semelhante country.name
.
PS: Quero evitar anotações, pois quero melhorar isso e usar o RegEx para filtrar os campos.
Edit : Estou tentando ver se é possível emular o comportamento do plugin JSON do Struts2
usando Gson
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
Editar: reabri a pergunta com a seguinte adição:
Eu adicionei um segundo campo com o mesmo tipo para esclarecer ainda mais esse problema. Basicamente, quero excluir, country.name
mas não countrOfBirth.name
. Também não quero excluir País como um tipo. Portanto, os tipos são os mesmos, é o local real no gráfico do objeto que eu quero identificar e excluir.
JsonSerializer
para algum tipo - Country
no seu caso - para o qual é então aplicado e ExclusionStrategy
que decide quais campos serializar.