JsonElement jsonElement = parser.parse(content);
if (jsonElement.isJsonObject()) {
JsonObject root = jsonElement.getAsJsonObject();
for (int i = 0; i < types.length; i++) {
Parameter parameter = parameterNames[i];
JsonElement node = root.get(parameter.getName());
if (isWithoutRoot(parameterNames, root)) {
values[i] = gson.fromJson(root, parameter.getParameterizedType());
logger.info("json without root deserialized");
break;
} else if (node != null) {
if (node.isJsonArray()) {
JsonArray jsonArray= node.getAsJsonArray();
Type type = parameter.getParameterizedType();
if (type instanceof ParameterizedType) {
values[i] = gson.fromJson(jsonArray, type);
} else {
values[i] = gson.fromJson(jsonArray, types[i]);
}