Bestimmte Feldeigenschaften von der Gson-Serialisierung ausschließen
In Gson kann der Ausschluss bestimmter Feldeigenschaften ohne Verwendung von Anmerkungen durch benutzerdefinierte Feldausschlussstrategien erreicht werden. Durch die Implementierung der ExclusionStrategy-Schnittstelle können Sie die Ausschlusskriterien entsprechend Ihren Anforderungen anpassen.
Ein Ansatz besteht darin, eine Feldausschlussstrategie basierend auf dem von Gson bereitgestellten FieldAttributes-Objekt zu erstellen. Während FieldAttributes keinen direkten Zugriff auf verschachtelte Eigenschaften bietet, können Sie das Objektdiagramm mithilfe von Reflektion durchlaufen, um nach bestimmten Feldeigenschaftskombinationen zu suchen.
Zum Beispiel, um das Land auszuschließen. name-Eigenschaft können Sie die folgende Ausschlussstrategie verwenden:
public class FieldExclusionStrategy implements ExclusionStrategy { private List<String> excludedProperties; public FieldExclusionStrategy(List<String> excludedProperties) { this.excludedProperties = excludedProperties; } @Override public boolean shouldSkipField(FieldAttributes fieldAttributes) { String fieldName = fieldAttributes.getName(); for (String excludedProperty : excludedProperties) { if (fieldName.startsWith(excludedProperty)) { return true; } } return false; } @Override public boolean shouldSkipClass(Class<?> clazz) { return false; } }
In Ihrem Beispiel würden Sie die Ausschlussstrategie als verwenden folgt:
Gson gson = new GsonBuilder() .setExclusionStrategies(new FieldExclusionStrategy(Arrays.asList("country.name"))) .create();
Alternativ können Sie die Annotation SerializedName verwenden, um ähnliche Ergebnisse zu erzielen. Durch Annotieren der Eigenschaft country.name mit @SerializedName(value = "myCountryName") können Sie einen benutzerdefinierten Namen für die Eigenschaft angeben, der während der Serialisierung verwendet wird. Dadurch können Sie die ursprüngliche Eigenschaft country.name von der JSON-Ausgabe ausschließen.
Das obige ist der detaillierte Inhalt vonWie kann ich bestimmte GSON-Feldeigenschaften ohne Anmerkungen ausschließen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!