java - RestTemplate postForObject 无法映射除 String.class 之外的自定义类
问题描述
我试图使用 RestTemplate postForObject 来使用 firebase Auth API,但是当我将 String.class 分配为返回类型时,它的工作文件但是如果我分配我的自定义类来处理响应失败,尽管自定义类属性与 JSON 返回相同,
restTemplate.postForObject( uri, request, UserResponse.class);
public class UserResponse {
private String kind;
private String localId;
private String email;
private String displayName;
private String idToken;
private Boolean registered;
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public String getLocalId() {
return localId;
}
public void setLocalId(String localId) {
this.localId = localId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getIdToken() {
return idToken;
}
public void setIdToken(String idToken) {
this.idToken = idToken;
}
public Boolean getRegistered() {
return registered;
}
public void setRegistered(Boolean registered) {
this.registered = registered;
}
}
可以在我错的地方吗?
例外:
2020-04-09 16:06:06.980 ERROR 18200 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:787) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:768) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:322) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
at aaa.Application.main(Application.java:10) ~[classes/:na]
Caused by: org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class aaa.model.UserResponse] and content type [application/json;charset=UTF-8]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:123) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:741) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:674) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:418) ~[spring-web-5.2.5.RELEASE.jar:5.2.5.RELEASE]
at aaa.config.Bootstrap.run(Bootstrap.java:49) ~[classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:784) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
... 5 common frames omitted
解决方案
添加jackson
依赖。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.3</version>
</dependency>
推荐阅读
- spring - 如何使用 WebClient 压缩 JSON 请求正文?
- java - 下拉菜单未填充,我的错误在哪里?
- python - 如何使用里面的 Python 代码运行可执行文件
- python - 解释python中.filter代码的含义
- python - Executemany 因“执行操作失败;无法处理参数”而失败
- c++ - 使用 libcurl 的 TLS 客户端,在服务器端客户端验证失败时不会失败
- string - 如何在 CSV 文件末尾多次添加相同的字符串?
- grpc-java - 如何为 gRPC 生成的 Java 代码实现 com.google.protobuf.BlockingRpcChannel?
- c# - C# 中的内部作用域或嵌套作用域会影响 GC 吗?
- java - chromedriver window.navigator.webdriver 标志在 chrome v80+ 中为真