Maison  >  Article  >  Java  >  \"BEGIN_ARRAY attendu mais BEGIN_OBJECT\" : Pourquoi mon erreur d'analyse JSON se produit-elle ?

\"BEGIN_ARRAY attendu mais BEGIN_OBJECT\" : Pourquoi mon erreur d'analyse JSON se produit-elle ?

DDD
DDDoriginal
2024-10-27 04:40:29893parcourir

"BEGIN_ARRAY attendu mais était BEGIN_OBJECT" : erreur d'analyse JSON

Lors de la manipulation de données JSON, vous rencontrez des erreurs telles que "BEGIN_ARRAY attendu mais était BEGIN_OBJECT" peut être frustrant. Pour comprendre la cause et trouver une solution, plongeons dans le scénario d'erreur spécifique :

L'erreur se produit lorsque vous tentez d'analyser une réponse JSON dans un tableau d'objets, mais la réponse réelle est un objet. L'extrait de code suivant illustre ce problème :

<code class="java">Gson gson = new GsonBuilder().setDateFormat("M/d/yy hh:mm a").create();
List<Post> postsList = Arrays.asList(gson.fromJson(reader, Post[].class));</code>

Ici, postsList est censé contenir une collection d'objets Post, mais la réponse JSON reçue n'est qu'un seul objet Post :

<code class="json">{ 
  "dstOffset" : 3600, 
  "rawOffset" : 36000, 
  "status" : "OK", 
  "timeZoneId" : "Australia/Hobart", 
  "timeZoneName" : "Australian Eastern Daylight Time" 
}</code>

Pour résoudre cette inadéquation, modifiez votre code pour tenir compte de la structure d'objet unique :

<code class="java">Post post = gson.fromJson(reader, Post.class);</code>

En convertissant le JSON directement en un seul objet Post, vous alignez votre structure de données sur le format de réponse JSON réel, éliminant ainsi l'erreur.

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!

Déclaration:
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