Estoy tratando de aprender Gson y estoy luchando con la exclusión de campo. Aqui estan mis clases
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;
}
Puedo usar GsonBuilder y agregar una ExclusionStrategy para un nombre de campo como firstNameo countrypero parece que no logro excluir propiedades de ciertos campos como country.name.
Usando el método public boolean shouldSkipField(FieldAttributes fa), FieldAttributes no contiene suficiente información para hacer coincidir el campo con un filtro como country.name.
PD: Quiero evitar anotaciones ya que quiero mejorar esto y usar RegEx para filtrar los campos.
Editar : estoy tratando de ver si es posible emular el comportamiento del complemento JSON Struts2
usando Gson
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
Editar: reabrí la pregunta con la siguiente adición:
Agregué un segundo campo con el mismo tipo para aclarar aún más este problema. Básicamente quiero excluir country.namepero no countrOfBirth.name. Tampoco quiero excluir País como tipo. Entonces, los tipos son los mismos, es el lugar real en el gráfico del objeto que quiero señalar y excluir.
JsonSerializerpara algún tipo, Countryen su caso, para el que luego se aplica y ExclusionStrategyque decide qué campos serializar.