ホームページ >Java >&#&チュートリアル >GSON が「BEGIN_OBJECT を予期しましたが、BEGIN_ARRAY でした」をスローするのはなぜですか?

GSON が「BEGIN_OBJECT を予期しましたが、BEGIN_ARRAY でした」をスローするのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-04 19:38:41473ブラウズ

Why Does GSON Throw

GSON が「BEGIN_OBJECT を予期しましたが、BEGIN_ARRAY でした」エラーをスローします

オブジェクトの配列を含む JSON 文字列を解析してリストに変換しようとしましたオブジェクトの場合、GSON は「BEGIN_OBJECT を予期していましたが、 BEGIN_ARRAY」例外。問題は、JSON 構造とそれを解釈しようとするコードの間の期待値の不一致にあります。

エラーを理解するには、次の JSON 文字列を考慮してください。

[
   {
      // Object properties
   },
   {
      // Another object
   }
]

この JSON は、次の配列を表します。オブジェクト。ただし、コードは、ChannelSearchEnum 型の単一オブジェクトとして逆シリアル化しようとします。この期待の不一致によりエラーが発生します。

この問題を解決するには、オブジェクトの配列を期待するようにコードを修正します。

Gson gson = new Gson();
ChannelSearchEnum[] enums = gson.fromJson(yourJson, ChannelSearchEnum[].class);

あるいは、TypeToken クラスを使用して型を作成することもできます。オブジェクトのコレクションを表す:

Type collectionType = new TypeToken<Collection<ChannelSearchEnum>>(){}.getType();
Collection<ChannelSearchEnum> enums = gson.fromJson(yourJson, collectionType);

JSON 構造を正しく処理することで、「期待されるBEGIN_OBJECT が BEGIN_ARRAY エラーでしたが、データは正常に解析されて使用されました。

以上がGSON が「BEGIN_OBJECT を予期しましたが、BEGIN_ARRAY でした」をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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