You're trying to create an non-Array(Collection) object from a JSONArray. The error is pretty clear: GSON was expecting the beginning of an object but found the beginning of an array instead.
Take a look at the documentation page below to see how to work with Array and Collection types with GSON
Array Examples
Gson gson = new Gson(); int[] ints = {1, 2, 3, 4, 5}; String[] strings
= {"abc", "def", "ghi"};
(Serialization) gson.toJson(ints); ==> prints [1,2,3,4,5]
gson.toJson(strings); ==> prints ["abc", "def", "ghi"]
(Deserialization) int[] ints2 = gson.fromJson("[1,2,3,4,5]",
int[].class);
==> ints2 will be same as ints
We also support multi-dimensional arrays, with arbitrarily complex
element types
Collections Examples
Gson gson = new Gson(); Collection ints =
Lists.immutableList(1,2,3,4,5);
(Serialization) String json = gson.toJson(ints); ==> json is
[1,2,3,4,5]
(Deserialization) Type collectionType = new
TypeToken>(){}.getType(); Collection
ints2 = gson.fromJson(json, collectionType); ints2 is same as ints
Fairly hideous: note how we define the type of collection
Unfortunately, no way to get around this in Java
Collections Limitations
Can serialize collection of arbitrary objects but can not deserialize
from it Because there is no way for the user to indicate the type of
the resulting object While deserializing, Collection must be of a
specific generic type All of this makes sense, and is rarely a problem
w> hen following good Java coding practices