Heim > Java > javaLernprogramm > Hauptteil

Wie lassen sich verschachtelte JSON-Daten mit einem benutzerdefinierten Gson-Konverter in Retrofit effizient extrahieren?

Susan Sarandon
Freigeben: 2024-11-19 04:49:02
Original
914 Leute haben es durchsucht

How to Efficiently Extract Nested JSON Data Using a Custom Gson Converter in Retrofit?

Extrahieren von verschachteltem JSON mit einem benutzerdefinierten Gson-Konverter in Retrofit

Viele APIs stellen Antworten mit einer gemeinsamen JSON-Struktur bereit, bei der ein Stammobjekt ein verschachteltes Objekt umfasst Feld „Inhalt“ mit den gewünschten Daten. Die meisten POJOs modellieren jedoch nur die Daten innerhalb des Felds „Inhalt“, sodass der Retrofit-Typ-Adapter nicht in der Lage ist, das entsprechende Objekt zu extrahieren und zurückzugeben.

Um dieses Problem zu beheben, kann ein benutzerdefinierter Gson-Deserialisierer entwickelt werden, um das „ „Content“-Feld und gibt das eingebettete Objekt zurück. So geht's:

Benutzerdefinierter Deserializer:

Erstellen Sie eine Klasse, die die JsonDeserializer-Schnittstelle für den gewünschten POJO-Typ implementiert. Zum Beispiel für ein „Content“-POJO:

class ContentDeserializer implements JsonDeserializer<Content> {
    @Override
    public Content deserialize(JsonElement je, Type type, JsonDeserializationContext jdc)
        throws JsonParseException {
        // Extract the "content" element
        JsonElement content = je.getAsJsonObject().get("content");

        // Deserialize the content using a new Gson instance
        return new Gson().fromJson(content, Content.class);
    }
}
Nach dem Login kopieren

Gson-Konfiguration:

Registrieren Sie den benutzerdefinierten Deserialisierer bei einer GsonBuilder-Instanz:

Gson gson = new GsonBuilder()
    .registerTypeAdapter(Content.class, new ContentDeserializer())
    .create();
Nach dem Login kopieren

Diese Gson-Instanz kann jetzt verwendet werden, um JSON-Antworten direkt in den eingebetteten „Inhalt“ zu deserialisieren. Objekt.

Retrofit-Integration:

Verwenden Sie schließlich den benutzerdefinierten Gson-Konverter, wenn Sie die Retrofit-Instanz erstellen:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(url)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build();
Nach dem Login kopieren

Jetzt, wenn Retrofit deserialisiert Bei API-Antworten wird der benutzerdefinierte Konverter verwendet, um nur das Feld „Inhalt“ zu extrahieren und den entsprechenden POJO-Typ zurückzugeben.

Das obige ist der detaillierte Inhalt vonWie lassen sich verschachtelte JSON-Daten mit einem benutzerdefinierten Gson-Konverter in Retrofit effizient extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage