Your problem is here:
String data = dataElem.getAsJsonObject().get("data").getAsString();
You don't want a String
, you want the actual JsonElement
from the parse tree:
JsonElement je = dataElem.getAsJsonObject().get("data");
Then your deserialization to an array of your Model
will work:
bundle.putParcelableArray("models", gson.fromJson(je, Model[].class));