对于jsonMap,我使用以下方法:
public static <T> T mapJsonToObject(String json, T dtoClass) throws Exception {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(json, new TypeReference<RestResponse<UserDto>>() {
});
}
UserDto看起来如下所示:
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDto {
@JsonProperty("items")
private List<User> userList;
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
我想改进这种Map方法,而不附加到UserDto类,并将其替换为泛型。
这可能吗?怎么可能?
- 谢谢-谢谢
4条答案
按热度按时间6l7fqoea1#
TypeReference
要求您静态地而不是动态地指定参数,因此如果您需要进一步参数化类型,它将不起作用。我认为你需要的是
JavaType
:您可以使用TypeFactory
动态构建示例。您可以通过ObjectMapper.getTypeFactory()
获得TypeFactory
的示例。您还可以从简单的Class
和TypeReference
构建JavaType
示例。6qqygrtg2#
一种方法是定义一个JacksonJavaType,表示一个 clazz 类型的项列表。
以在建构时将泛型参数的类别传递至泛型类别。
在访问Class clazz 变量时,您可以使用以下语句构造一个JacksonJavaType,例如,它表示class clazz 的项列表。
我希望它能有所帮助。我正在我自己的代码中使用这种方法。
ubbxdtey3#
试试看:
z0qdvdin4#
这是一个用Jackson解析简单的基于List的泛型的例子,带有一个简单的Java注解!