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 サイトの他の関連記事を参照してください。