Maison  >  Article  >  Java  >  Pourquoi est-ce que j'obtiens une erreur « BEGIN_ARRAY attendu mais était BEGIN_OBJECT » lors de l'analyse de JSON en Java ?

Pourquoi est-ce que j'obtiens une erreur « BEGIN_ARRAY attendu mais était BEGIN_OBJECT » lors de l'analyse de JSON en Java ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-26 17:14:02388parcourir

Why Am I Getting a

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

En Java, vous rencontrez l'erreur "BEGIN_ARRAY attendu mais était BEGIN_OBJECT" " en raison d'une inadéquation entre la structure JSON attendue et réelle lors de l'analyse à l'aide de Gson.

Structure JSON

La réponse JSON fournie par le serveur n'est pas un tableau mais un objet unique :

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

Code d'analyse Gson

Cependant, dans votre code, vous supposez à tort que la réponse JSON est un tableau d'objets Post :

<code class="java">List<Post> postsList = Arrays.asList(gson.fromJson(reader, Post[].class));</code>

Gson attend un tableau, il renvoie donc l'erreur lorsqu'il rencontre le caractère BEGIN_OBJECT dans la réponse JSON.

Solution

À résolvez l'erreur, modifiez votre code pour attendre un seul objet Post :

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

Ce changement s'alignera sur la structure JSON réelle et éliminera l'erreur d'analyse.

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