gpt4 book ai didi

java - 如何将 Jackson 的 TypeReference 与泛型一起使用?

转载 作者:行者123 更新时间:2023-12-03 05:13:46 30 4
gpt4 key购买 nike

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

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;
}
}

我想改进这种映射方法,而不附加到 UserDto 类,并将其替换为泛型。

这可能吗?又如何?

谢谢。

最佳答案

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

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

关于java - 如何将 Jackson 的 TypeReference 与泛型一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34578452/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com