JSONArray から非配列 (コレクション) オブジェクトを作成しようとしています。エラーは明らかです。GSON はオブジェクトの先頭を予期していましたが、代わりに配列の先頭を検出しました。
以下のドキュメント ページを参照して、GSON で配列型とコレクション型を操作する方法を確認してください。
https://sites.google.com/site/gson/gson-user-guide#TOC-Collections-Examples
ドキュメントから:
配列の例
Gson gson = 新しい Gson(); int[] ints = {1, 2, 3, 4, 5}; String[] 文字列 = {"abc", "def", "ghi"};
(シリアライズ) gson.toJson(ints); ==> 出力 [1,2,3,4,5] gson.toJson(strings); ==> 出力 ["abc", "def", "ghi"]
(逆シリアル化) int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class); ==> ints2 は ints と同じになります
また、任意の複雑な要素タイプを持つ多次元配列もサポートしています コレクション 例
Gson gson = 新しい Gson(); コレクション ints = Lists.immutableList(1,2,3,4,5);
(シリアライズ) 文字列 json = gson.toJson(ints); ==> json は [1,2,3,4,5] です
(デシリアライゼーション) Type collectionType = new TypeToken>(){}.getType(); コレクション ints2 = gson.fromJson(json, collectionType); ints2 は ints と同じです
かなり恐ろしい: コレクションの型を定義する方法に注意してください 残念ながら、Java でこれを回避する方法はありません
コレクションの制限
任意のオブジェクトのコレクションをシリアル化できますが、そこから逆シリアル化することはできません ユーザーが結果のオブジェクトの型を示す方法がないため 逆シリアル化している間、コレクションは特定のジェネリック型でなければなりません これはすべて意味があり、ほとんど問題になりませんw> 優れた Java コーディング プラクティスに従う場合