I\'m getting this error when I receive only one single item in a list. I\'m using Jersey in the server side REST Web service, I only get the error when the List returned one
Your issue results really weird for me... it seems that there must be some problem with Jersey's JSON serialization of single element arrays... if you Google "Jersey JSON single element arrays" you'll find the same issue, like here or here. I don't know too much about Jersey, so I can't help you with that...
That said, I can suggest a workaround using manually parsing in Gson, to adapt your parsing to the 2 different responses (object or array). You could do something like this:
//manually parsing until get the "project" element...
JsonParser parser = new JsonParser();
JsonObject rootObejct = parser.parse(yourJsonString).getAsJsonObject();
JsonElement projectElement = rootObejct.get("project");
Gson gson = new Gson();
List projectList = new ArrayList<>();
//Check if "project" element is an array or an object and parse accordingly...
if (projectElement.isJsonObject()) {
//The returned list has only 1 element
Project project = gson.fromJson(projectElement, Project.class);
projectList.add(project);
}
else if (projectElement.isJsonArray()) {
//The returned list has >1 elements
Type projectListType = new TypeToken>() {}.getType();
projectList = gson.fromJson(projectElement, projectListType);
}
//Now you have a List projectList with one or many Project elements,
//depending on the response...
Note that you don't need your class ProjectContainer.
Something like this should work for you, although obviously the best thing would be fix the serialization issue!