ホームページ  >  記事  >  Java  >  Java で JSON を解析すると「BEGIN_ARRAY が期待されましたが、BEGIN_OBJECT でした」というエラーが発生するのはなぜですか?

Java で JSON を解析すると「BEGIN_ARRAY が期待されましたが、BEGIN_OBJECT でした」というエラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-26 17:14:02388ブラウズ

Why Am I Getting a

JSON 解析エラー:「BEGIN_ARRAY を予期しましたが、BEGIN_OBJECT でした」

Java では、「BEGIN_ARRAY を予期しましたが、BEGIN_OBJECT でした」というエラーが発生します。 " Gson を使用した解析中に予想される JSON 構造と実際の JSON 構造が一致しないためです。

JSON 構造

サーバーから提供された JSON 応答は配列ではなく、 single object:

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

Gson Parsing Code

ただし、コードでは、JSON 応答が Post オブジェクトの配列であると誤って仮定しています:

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

Gson は配列を期待しているため、JSON 応答で BEGIN_OBJECT 文字を検出するとエラーをスローします。

Solution

Toエラーを解決し、単一の Post オブジェクトを想定するようにコードを変更します:

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

この変更により、実際の JSON 構造と一致し、解析エラーが解消されます。

以上がJava で JSON を解析すると「BEGIN_ARRAY が期待されましたが、BEGIN_OBJECT でした」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。