public static <T> List<T> convertJSONStringTOListOfT(String jsonString, Class<T> t){
if(jsonString == null){
return null;
}
ObjectMapper mapper = new ObjectMapper();
try
{
List<T> list = mapper.readValue(jsonString, new TypeReference<List<T>>() {});
return list;
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
У меня есть вышеуказанный метод, когда я пытаюсь вызвать его, используя:
list = convertJSONStringTOListOfT(str, CustomAssessmentQuestionSetItem.class);
Возвращенный список List<LinkedHashMap>
не List<CustomAssessmentQuestionSetItem>
Хотя, если я не использую дженерики, приведенный ниже код работает нормально:
list = mapper.readValue(str, new TypeReference<List<CustomAssessmentQuestionSetItem>>() {});
Оба вызова кажутся мне одинаковыми. Невозможно понять, почему общий создает List<LinkedHashMap>
вместо List<CustomAssessmentQuestionSetItem>
К вашему сведению: я также пытался изменить сигнатуру метода на
public static <T> List<T> convertJSONStringTOListOfT(String jsonString, T t)
и соответствующий вызов
list = convertJSONStringTOListOfT(str,new CustomAssessmentQuestionSetItem());
но это не сработало.
t
. - person RealSkeptic   schedule 24.03.2015