Heim >Java >javaLernprogramm >Wie schließe ich bestimmte Felder ohne Anmerkungen von der Gson-Serialisierung aus?

Wie schließe ich bestimmte Felder ohne Anmerkungen von der Gson-Serialisierung aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-09 00:51:10183Durchsuche

How to Exclude Specific Fields from Gson Serialization without Annotations?

Gson: Bestimmte Felder von der Serialisierung ohne Anmerkungen ausschließen

Bestimmte Felder von der Gson-Serialisierung ohne Anmerkungen auszuschließen kann schwierig sein. So erreichen Sie dies mit einer benutzerdefinierten ExclusionStrategy:

Benutzerdefinierte ExclusionStrategy

Gson bietet eine ExclusionStrategy-Schnittstelle, mit der Sie anpassen können, wie Felder ausgeschlossen werden. Erstellen Sie eine Implementierung dieser Schnittstelle:

public class FieldExclusionStrategy implements ExclusionStrategy {

    private Pattern pattern;

    public FieldExclusionStrategy(String regex) {
        pattern = Pattern.compile(regex);
    }

    @Override
    public boolean shouldSkipField(FieldAttributes fa) {
        String fieldName = fa.getName();
        return pattern.matcher(fieldName).matches();
    }

    @Override
    public boolean shouldSkipClass(Class<?> clazz) {
        return false;
    }
}

Ausschluss anpassen

Im bereitgestellten Beispiel schließt die ExclusionStrategy Felder basierend auf einem bestimmten regulären Ausdruck aus. Sie können das Muster so anpassen, dass es mit den gewünschten Feldern übereinstimmt, die ausgeschlossen werden sollen, z. B. „country.name“.

Verwenden der ExclusionStrategy

Sobald die ExclusionStrategy definiert ist, verwenden Sie sie bei der Konfiguration der GsonBuilder:

Gson gson = new GsonBuilder()
    .setExclusionStrategies(new FieldExclusionStrategy("country.name"))
    .create();

Nutzung Beispiel

Nach der Konfiguration von Gson können Sie Ihr Student-Objekt wie folgt serialisieren:

String json = gson.toJson(student);

Dadurch wird das Feld „country.name“ von der serialisierten JSON-Ausgabe ausgeschlossen.

Zusätzliche Hinweise

  • Wenn Sie Felder basierend auf anderen Kriterien ausschließen möchten (z. B. Typ oder Anmerkungen) können Sie die Methoden ShouldSkipField und ShouldSkipClass entsprechend ändern.
  • Für Felder mit demselben Typ gilt die Ausschlussregel weiterhin für den spezifischen Feldpfad. In diesem Fall wird „countryOfBirth.name“ nicht ausgeschlossen.
  • Um einen gesamten Typ auszuschließen, überschreiben Sie die Methode „shouldSkipClass“ in der ExclusionStrategy.

Das obige ist der detaillierte Inhalt vonWie schließe ich bestimmte Felder ohne Anmerkungen von der Gson-Serialisierung aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn