Java 在尝试使用ObjectMapper生成方法时,如何将.class传递给ObjectMapper?
我有一个使用Spring编写的应用程序,ObjectMapper有问题。问题出在我试图泛化的方法中 我看起来像这样:Java 在尝试使用ObjectMapper生成方法时,如何将.class传递给ObjectMapper?,java,json,spring,generics,generic-programming,Java,Json,Spring,Generics,Generic Programming,我有一个使用Spring编写的应用程序,ObjectMapper有问题。问题出在我试图泛化的方法中 我看起来像这样: public T getResponse(U senderJsonModel, T response) { headers.setContentType(MediaType.APPLICATION_JSON); HttpEntity<String> entity = new HttpEntity<>(createSendRequest(se
public T getResponse(U senderJsonModel, T response) {
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<>(createSendRequest(senderJsonModel), headers);
String answer = restTemplate.postForObject(apiAddress, entity, String.class);
try {
response = mapper.readValue(answer, response.getClass());
} catch (IOException e) {
log.error("Error mapping JSON values to Object", e);
}
return response;
}
我尝试了TypeReference(){}
,但我得到了:
java.lang.ClassCastException:无法将类java.util.LinkedHashMap强制转换为类com.app.infrastructure.sender.emailsender.response.EmailHttpResponse
在U下我传递一个EmailJsonModel类的实例,在T下我传递一个EmailHttpResponse类的实例
我找不到如何将.class传递给此方法的方法,是否有方法可以这样做 映射器变量是否已初始化且不为空?你用TypeReference(){}试过什么?传递一个
类clazz
而不是T
。并像T result=mapper.readValue(答案,clazz)那样使用它
然后返回结果
@Jim_Ktr我很确定TypeReference(){}
不会工作,因为运行时T
将是Object
。您的映射器变量是否已初始化且不为空?你用TypeReference(){}试过什么?传递一个类clazz
而不是T
。并像T result=mapper.readValue(答案,clazz)那样使用它
然后返回结果
@Jim_Ktr我很确定TypeReference(){}
不会工作,因为T
在运行时将是对象
。
response = mapper.readValue(answer, response.getClass());