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 firstName
o country
pero 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.name
pero 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.
JsonSerializer
para algún tipo, Country
en su caso, para el que luego se aplica y ExclusionStrategy
que decide qué campos serializar.