Ich versuche Gson zu lernen und habe Probleme mit dem Ausschluss von Feldern. Hier sind meine Klassen
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;
}
Ich kann den GsonBuilder verwenden und eine ExclusionStrategy für einen Feldnamen wie firstName
oder hinzufügen, country
aber ich kann es scheinbar nicht schaffen, Eigenschaften bestimmter Felder wie auszuschließen country.name
.
Mit der Methode enthält public boolean shouldSkipField(FieldAttributes fa)
FieldAttributes nicht genügend Informationen, um das Feld mit einem Filter wie abzugleichen country.name
.
PS: Ich möchte Anmerkungen vermeiden, da ich dies verbessern und RegEx zum Herausfiltern von Feldern verwenden möchte.
Bearbeiten : Ich versuche zu sehen, ob es möglich ist, das Verhalten des Struts2 JSON-Plugins zu emulieren
mit Gson
<interceptor-ref name="json">
<param name="enableSMD">true</param>
<param name="excludeProperties">
login.password,
studentList.*\.sin
</param>
</interceptor-ref>
Bearbeiten: Ich habe die Frage mit folgendem Zusatz erneut geöffnet:
Ich habe ein zweites Feld mit demselben Typ hinzugefügt, um dieses Problem weiter zu klären. Grundsätzlich möchte ich country.name
aber nicht ausschließen countrOfBirth.name
. Ich möchte auch Country nicht als Typ ausschließen. Die Typen sind also die gleichen, es ist die tatsächliche Stelle im Objektdiagramm, die ich lokalisieren und ausschließen möchte.
JsonSerializer
Typs für einen bestimmten Typ - Country
in Ihrem Fall -, der dann angewendet wird und ExclusionStrategy
der entscheidet, welche Felder serialisiert werden sollen.