「BEGIN_ARRAY を期待していましたが、BEGIN_OBJECT でした」: JSON 解析エラーの解明
JSON データ操作を扱うときに、「BEGIN_ARRAY を期待していましたが、BEGIN_OBJECT でした」のようなエラーが発生しましたBEGIN_OBJECT でした」というメッセージはイライラするかもしれません。原因を理解して解決策を見つけるために、具体的なエラー シナリオを詳しく見てみましょう。
JSON 応答をオブジェクトの配列に解析しようとしたときにエラーが発生しますが、実際の応答はオブジェクトです。次のコード スニペットは、この問題を示しています:
<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>
ここで、postsList は Post オブジェクトのコレクションを保持することが期待されていますが、受信した JSON 応答は単なる単一の Post オブジェクトです:
<code class="json">{ "dstOffset" : 3600, "rawOffset" : 36000, "status" : "OK", "timeZoneId" : "Australia/Hobart", "timeZoneName" : "Australian Eastern Daylight Time" }</code>
この不一致を解決するには、単一のオブジェクト構造を考慮してコードを変更します。
<code class="java">Post post = gson.fromJson(reader, Post.class);</code>
JSON を単一の Post オブジェクトに直接変換することで、データ構造を実際の JSON 応答形式に合わせて調整し、エラー。
以上が「BEGIN_ARRAY を予期していましたが、BEGIN_OBJECT でした」: JSON 解析エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。