杰克逊2.*和json到ArrayList <>

Mic*_*ael 3 java json jackson

我正在尝试将Json数组反序列化为对象的ArrayList.我找到了一些关于我正在尝试做什么的文档,但是我在编译时遇到了错误.

以下是我试图用Jackson 2.2.2来解决它的方法:

ArrayList<Friends> list =  objectMapper.readValue(result, new TypeReference<ArrayList<Friends>>() {});
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

The method readValue(String, Class<T>) in the type ObjectMapper is not applicable for the arguments (String, new TypeReference<ArrayList<Friends>>(){})
Run Code Online (Sandbox Code Playgroud)

我猜测我读过的一些参考文献是基于杰克逊的旧版本.如何在Jackson 2.2 +中实现这一目标

Pol*_*878 8

请尝试以下方法:

JavaType type = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, Friends.class);
ArrayList<Friends> friendsList = objectMapper.readValue(result, type);
Run Code Online (Sandbox Code Playgroud)

请注意,我从以下答案中提取了这个:Jackson和泛型类型参考

从杰克逊1.3(前一段时间)开始,他们建议你使用TypeFactory.

编辑
在进一步检查时,你上面所做的就是为我工作......我能够传入一个TypeReference子类readValue,一切正常.你确定你有合适的TypeReference进口类型吗?通常这些类型的错误是偶然导入错误的类型(其他一些库可能有一个TypeReference类).