GSON Throwing "BEGIN_OBJECT が期待されましたが、BEGIN_ARRAY でした"?
GSON を使用して JSON 文字列をオブジェクトのリストに解析しようとすると、 「BEGIN_OBJECT を予期していましたが、BEGIN_ARRAY でした」というエラーが発生する可能性があります。 エラー。これは、オブジェクトを予期しているのに、提供された JSON データが配列である場合に発生します。
この問題を解決するには、配列構造に合わせて解析コードを調整する必要があります。問題の内訳と適切な解決策は次のとおりです。
問題:
提供される JSON データは、単一のオブジェクトではなく、オブジェクトの配列です。ただし、コードは単一のオブジェクトとして解析しようとするため、エラーが発生します。
解決策:
これを修正するには、JSON がオブジェクトの配列を表します。これは、JSON をオブジェクト クラスの配列に解析するようにコードを変更することで実行できます。
ChannelSearchEnum[] enums = gson.fromJson(jstring, ChannelSearchEnum[].class);
この方法では、GSON は JSON を ChannelSearchEnum オブジェクトの配列として正しく解析します。
代替解決策:
柔軟性を高めるために、TypeToken クラスを使用して、以下に示すように、解析するコレクションのパラメーター化された型を定義します。
Type collectionType = new TypeToken<Collection<ChannelSearchEnum>>() {}.getType(); Collection<ChannelSearchEnum> enums = gson.fromJson(jstring, collectionType);
このアプローチにより、JSON を ChannelSearchEnum オブジェクトのコレクションに解析できます。このコレクションは、List、Set、または他のコレクションタイプ。
以上がGSON が JSON を解析するときに「BEGIN_OBJECT を期待していましたが、BEGIN_ARRAY でした」というメッセージをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。