Maison > Java > javaDidacticiel > Comment extraire efficacement des données JSON imbriquées à l'aide d'un convertisseur Gson personnalisé dans Retrofit ?

Comment extraire efficacement des données JSON imbriquées à l'aide d'un convertisseur Gson personnalisé dans Retrofit ?

Susan Sarandon
Libérer: 2024-11-19 04:49:02
original
962 Les gens l'ont consulté

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

Extraction de JSON imbriqué avec un convertisseur Gson personnalisé dans Retrofit

De nombreuses API fournissent des réponses avec une structure JSON commune où un objet racine englobe un objet imbriqué champ "content" contenant les données souhaitées. Cependant, la plupart des POJO modélisent uniquement les données contenues dans le champ « contenu », laissant l'adaptateur de type de mise à niveau incapable d'extraire et de renvoyer l'objet approprié.

Pour résoudre ce problème, un désérialiseur Gson personnalisé peut être développé pour extraire le " content" et renvoie l'objet incorporé. Voici comment :

Désérialiseur personnalisé :

Créez une classe implémentant l'interface JsonDeserializer pour le type POJO souhaité. Par exemple, pour un POJO « Contenu » :

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);
    }
}
Copier après la connexion

Configuration Gson :

Enregistrez le désérialiseur personnalisé avec une instance GsonBuilder :

Gson gson = new GsonBuilder()
    .registerTypeAdapter(Content.class, new ContentDeserializer())
    .create();
Copier après la connexion

Cette instance Gson peut désormais être utilisée pour désérialiser les réponses JSON directement dans l'objet "Contenu" intégré.

Intégration Retrofit :

Enfin, utilisez le convertisseur Gson personnalisé lors de la création de l'instance Retrofit :

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(url)
    .addConverterFactory(GsonConverterFactory.create(gson))
    .build();
Copier après la connexion

Désormais, lorsque Retrofit désérialise les réponses de l'API, il utilisera le convertisseur personnalisé pour extraire uniquement le champ « contenu » et renvoyer le type POJO approprié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal