[英]Parsing a list of objects with Jackson
我想使用Jackson解析對象列表。 使用Gson,我可以輕松做到這一點:
List<MyType> list = new Gson().fromJson(input, Types.listOf(MyType.class));
對於傑克遜,這似乎更加困難:
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>>(){});
}
我如何與傑克遜做到這一點?
更容易
MyType myType = new ObjectMapper().readValue(input, new TypeReference<List<MyType>>() {});
更新的答案。
在此期間,我已經找到了解決方案。 顯然,傑克遜提供了自己的解決方法:
List<MyType> list = new ObjectMapper().readValue(input, CollectionType.construct(List.class, SimpleType.construct(MyType.class));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.