4

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

以下是我尝试使用 Jackson 2.2.2 的方法:

ArrayList<Friends> list =  objectMapper.readValue(result, new TypeReference<ArrayList<Friends>>() {});

我得到的错误是:

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

我猜我一直在阅读的一些参考资料是基于杰克逊的旧版本。这如何在 Jackson 2.2 + 中完成

4

1 回答 1

8

尝试以下操作:

JavaType type = objectMapper.getTypeFactory().constructCollectionType(ArrayList.class, Friends.class);
ArrayList<Friends> friendsList = objectMapper.readValue(result, type);

请注意,我从以下答案中提取了这一点:Jackson and generic type reference

从 Jackson 1.3(不久前)开始,他们建议您使用TypeFactory.

编辑
在进一步检查中,您上面的内容对我有用...我能够将TypeReference子类传递给readValue并且一切正常。你确定你有正确的TypeReference进口类型吗?通常这些类型的错误是由于意外导入了错误的类型(其他一些库可能有一个TypeReference类)。

于 2013-10-29T18:22:14.207 回答