如何使用jackson的TypeReference与generics?

对于json映射,我使用以下方法:

public static  T mapJsonToObject(String json, T dtoClass) throws Exception { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(json, new TypeReference<RestResponse>() { }); } 

UserDto看起来像这样:

 @JsonIgnoreProperties(ignoreUnknown = true) public class UserDto { @JsonProperty("items") private List userList; public List getUserList() { return userList; } public void setUserList(List userList) { this.userList = userList; } } 

我想改进这种映射方法,而不是附加到UserDto类,并用generics替换它。

可能吗? 如何?

谢谢。

TypeReference要求您静态而非动态地指定参数,因此如果需要进一步参数化类型,则它不起作用。

我认为你需要的是JavaType :你可以使用TypeFactory动态构建实例。 您可以通过ObjectMapper.getTypeFactory()获得TypeFactory的实例。 您还可以从简单的ClassTypeReference构造JavaType实例。