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

Patricia Arquette
リリース: 2024-10-26 17:14:02
オリジナル
401 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!