Maison > Java > javaDidacticiel > le corps du texte

Comment résoudre les erreurs d'analyse JSON avec GSON dans Android lorsque la structure JSON a un objet racine inattendu ?

Mary-Kate Olsen
Libérer: 2024-10-30 17:14:02
original
213 Les gens l'ont consulté

How to troubleshoot JSON parsing errors with GSON in Android when the JSON structure has an unexpected root object?

Analyse JSON à l'aide de GSON dans Android : dépannage

Lors de votre tentative d'analyse des données JSON à l'aide de GSON, vous rencontrez une erreur due à une structure JSON inattendue. Approfondissons le problème et proposons une solution.

La structure JSON que vous essayez d'analyser semble avoir un objet racine, mais vous n'utilisez pas correctement la méthode fromJson de Gson pour lire son contenu. Notez également que Gson n'est pas conçu pour gérer directement les caractères UTF-8.

Méthode d'analyse correcte

Pour résoudre l'erreur, vous devez modifier votre méthode d'analyse comme suit :

<code class="java">public static <T> ArrayList<T> JsonParse(T t, InputStream inputStream) {
    ArrayList<T> lcs = new ArrayList<>();
    try (JsonReader reader = new JsonReader(new InputStreamReader(inputStream, "UTF8"))) {
        reader.beginObject();
        while (reader.hasNext()) {
            T cse = (T) gson.fromJson(reader, t.getClass());
            lcs.add(cse);
        }
        reader.endObject();

    } catch (Exception e) {
        e.printStackTrace();
    }
    return (ArrayList<T>) lcs;
}</code>
Copier après la connexion

Modification de la structure de classe de données

De plus, vous devrez peut-être modifier votre structure de classe GsonParse pour qu'elle corresponde à la structure JSON. Les changements suivants nécessitent une attention particulière :

  1. Renommer le nombre de chaînes privées ; en private int count ;, car "count" dans le JSON est une valeur numérique.
  2. Renommer private String colbreak ; vers privé int colbreak ; pour la même raison.
  3. Renommer les méthodes getter et setter en conséquence (par exemple, getCount et setCount au lieu de getString et setString).
  4. Modifier la liste privée mWords = new ArrayList(); vers une liste privée mWords = new ArrayList(); (notez le nom de classe "Word" au singulier).
  5. Mettez à jour la structure de la classe Word et les méthodes getter/setter de la même manière.

Gestion UTF-8

Assurez-vous que la réponse JSON que vous recevez du serveur est correctement formatée en UTF-8. Vous pouvez ajouter un en-tête de type MIME dans la réponse HTTP pour spécifier le codage correct, par exemple :

responseToClient.setContentType("application/json; charset=utf-8");
Copier après la connexion

En prenant en compte ces modifications, vous devriez pouvoir analyser avec succès les données JSON à l'aide de GSON dans votre application Android.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!