如何使用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
的实例。 您还可以从简单的Class
和TypeReference
构造JavaType
实例。