簡體   English   中英

用傑克遜解析對象列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM