Spring boot Spring引导RestTemplate反序列化问题
我有以下课程Spring boot Spring引导RestTemplate反序列化问题,spring-boot,resttemplate,Spring Boot,Resttemplate,我有以下课程 public class RestResponseDto { private Boolean status; private Object data; private Object error; public RestResponseDto(Boolean status, Object data, Object error) { this.status = status; this.data = data;
public class RestResponseDto {
private Boolean status;
private Object data;
private Object error;
public RestResponseDto(Boolean status, Object data, Object error) {
this.status = status;
this.data = data;
this.error = error;
}
//Getters and setters
}
我试图点击我的另一个RESTAPI(GET请求)并将响应映射到这个类
RestTemplate restTemplate = new RestTemplate();
RestResponseDto result = restTemplate.getForObject(uri, RestResponseDto.class);
但我得到了以下错误:
Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Can not construct instance of xxx.xxx.xxx.xxx: no suitable constructor found, can not deserialize from Object value (missing default constructor or creator, or perhaps need to add/enable type information?);
为了将响应映射到自定义DTO,您应该为给定DTO设置默认构造函数。在
ResponsedTo
中,没有定义默认构造函数。因此,将其更改为:
public class RestResponseDto {
private Boolean status;
private Object data;
private Object error;
public RestResponseDto() {
}
public RestResponseDto(Boolean status, Object data, Object error) {
this.status = status;
this.data = data;
this.error = error;
}
//Getters and setters
}
你有一个默认的无参数构造函数吗?这是一个可怕的建议。你不能随意地加入一个默认的构造函数,除非你想确定你会引入一些bug。要么只使用默认构造函数,要么让它设置默认值,要么根本没有默认值,然后找到另一种方法来注入值。