我想用Jackson来解析一个对象列表。有了Gson,我可以很容易地做到这一点:
List<MyType> list = new Gson().fromJson(input, Types.listOf(MyType.class));
和Jackson在一起,似乎更难:
List<MyType> list = new ObjectMapper().readValue(input, /* What to put here? */);
这段代码需要对任何类型的列表都有效(就像Gson一样),所以我不能只创建一个包含MyType
列表的类型并将其传递进去。
我试过使用new TypeLiteral<List<MyType>>(){}
,它可以工作,但只适用于一种类型。如果我把类型传递给方法,它就不再工作了:
public <T> List<T> parse(Class<T> myType) {
// returns a List<Map<?,?>> instead of List<T>
return new ObjectMapper().readValue(input, new TypeLiteral<List<T>>(){});
}
我该怎么和Jackson相处?
3条答案
按热度按时间bkhjykvo1#
种情况下更容易
更新答案。
iyfamqjs2#
同时我也找到了解决办法。显然,Jackson提供了自己的解决方法:
093gszye3#
以下内容适用于Jackson2.7及更高版本。它不使用过时的静态方法来获取TypeFactory。相反,它从对象Map器获取TypeFactory。