Maison > Java > javaDidacticiel > le corps du texte

Pourquoi Gson lance-t-il « BEGIN_ARRAY attendu mais était BEGIN_OBJECT » et comment y remédier ?

Linda Hamilton
Libérer: 2024-10-26 17:25:03
original
556 Les gens l'ont consulté

Why Does Gson Throw

BEGIN_ARRAY attendu mais était BEGIN_OBJECT à la ligne 1, colonne 2

Lors de la tentative d'analyse de JSON à l'aide de Gson, une erreur peut se produire indiquant : " com.google.gson.JsonSyntaxException : java.lang.IllegalStateException : BEGIN_ARRAY attendu mais BEGIN_OBJECT." Cette erreur signifie une inadéquation entre le format attendu des données JSON et la structure réelle des données reçues.

La cause première de ce problème réside dans la divergence entre les deux lignes de code suivantes :

List<Post> postsList = Arrays.asList(gson.fromJson(reader, Post[].class));
Copier après la connexion

Ce code tente de désérialiser le JSON dans un tableau d'objets Post, en s'attendant à ce que le JSON soit formaté comme [{"timeZoneId": ...}, ...]. Cependant, le JSON fourni est un objet, et non un tableau, comme en témoigne la présence des délimiteurs "{" et "}".

Pour rectifier cette erreur, il est nécessaire de modifier le code pour analyser correctement le JSON en tant qu'objet Post unique. Remplacez la ligne mentionnée ci-dessus par la suivante :

Post post = gson.fromJson(reader, Post.class);
Copier après la connexion

Avec cet ajustement, Gson désérialisera le JSON en un seul objet Post, résolvant ainsi l'erreur BEGIN_ARRAY attendue mais BEGIN_OBJECT. Notez qu'il suppose que le JSON est conforme à la structure définie dans la classe Post, avec un champ timeZoneId. Si le JSON contient des champs supplémentaires ou différents, le code peut nécessiter des modifications supplémentaires pour les gérer de manière appropriée.

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