我正在尝试使用RestTemplate(Spring Boot)读取来自rest服务的响应:
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<RMSendPropertyResponse> response = restTemplate.exchange("https://url", HttpMethod.POST, entity, RMSendPropertyResponse.class);
RMSendPropertyResponse rmResponse = response.getBody();
但当响应中存在错误数组时:
{
"message": "Something failed.",
"success": false,
"errors": [
{
"error_code": "MND_00026",
"error_value": "",
"error_description": "field not present"
},
{
"error_code": "VAL_00039",
"error_value": "0",
"error_description": "Wrong field"
}
],
"warnings": null,
"request_timestamp": "18-07-2017 11:34:46",
"response_timestamp": "18-07-2017 11:34:46"
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class RMSendPropertyResponse extends RMResponse {
private RMPropertyResponse property;
private List<RMWarning> warnings;
private List<RMError> errors;
public RMSendPropertyResponse() {
}
public RMPropertyResponse getProperty() {
return property;
}
public void setProperty(RMPropertyResponse property) {
this.property = property;
}
public List<RMWarning> getWarnings() {
return warnings;
}
public void setWarnings(List<RMWarning> warnings) {
this.warnings = warnings;
}
public List<RMError> getErrors() {
return errors;
}
public void setErrors(List<RMError> errors) {
this.errors = errors;
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public class RMError {
private String error_code;
private String error_description;
private String error_value;
public RMError() {
}
public String getError_code() {
return error_code;
}
public void setError_code(String error_code) {
this.error_code = error_code;
}
public String getError_description() {
return error_description;
}
public void setError_description(String error_description) {
this.error_description = error_description;
}
public String getError_value() {
return error_value;
}
public void setError_value(String error_value) {
this.error_value = error_value;
}
}
我不明白为什么没有构造器/工厂方法从字符串值反序列化。
谢谢
你的代码对我有用。您正在使用的spring-boot
的版本是什么?您自己管理jackson
的版本吗?如果是的话,你使用的是什么版本。您确定从您正在调用的外部url得到的响应是您粘贴在问题中的响应吗?下面是我复制的工作代码:
@RestController
public class MyController {
@GetMapping(value = "/read", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity read() {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<RMSendPropertyResponse> response = restTemplate.exchange("http://localhost:8080/", HttpMethod.GET, null, RMSendPropertyResponse.class);
RMSendPropertyResponse rmResponse = response.getBody();
return new ResponseEntity<>(rmResponse, HttpStatus.CREATED);
}
@GetMapping(value = "/", produces = MediaType.APPLICATION_JSON_VALUE)
public String get() {
return "{\n" +
" \"message\": \"Something failed.\",\n" +
" \"success\": false,\n" +
" \"errors\": [\n" +
" {\n" +
" \"error_code\": \"MND_00026\",\n" +
" \"error_value\": \"\",\n" +
" \"error_description\": \"field not present\"\n" +
" },\n" +
" {\n" +
" \"error_code\": \"VAL_00039\",\n" +
" \"error_value\": \"0\",\n" +
" \"error_description\": \"Wrong field\"\n" +
" }\n" +
" ],\n" +
" \"warnings\": null,\n" +
" \"request_timestamp\": \"18-07-2017 11:34:46\",\n" +
" \"response_timestamp\": \"18-07-2017 11:34:46\"\n" +
"}";
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
class RMError {
private String error_code;
private String error_description;
private String error_value;
public RMError() {
}
public String getError_code() {
return error_code;
}
public void setError_code(String error_code) {
this.error_code = error_code;
}
public String getError_description() {
return error_description;
}
public void setError_description(String error_description) {
this.error_description = error_description;
}
public String getError_value() {
return error_value;
}
public void setError_value(String error_value) {
this.error_value = error_value;
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
class RMSendPropertyResponse {
private List<RMError> errors;
public RMSendPropertyResponse() {
}
public List<RMError> getErrors() {
return errors;
}
public void setErrors(List<RMError> errors) {
this.errors = errors;
}
}
我是Spring DataJPA+REST项目的新手,我正在尝试使用OneToOne单向关系执行从reference EmployerType添加新的或编辑雇主。当我试图添加或编辑数据时,我会得到以下错误: 下面是关于这些课程的信息。 Rest控制器
问题内容: 使用包中的类时遇到了json解析问题,而我得到的错误是: 发生此问题的Web应用程序是使用AngularJS前端的Spring MVC应用程序,但我可以使用更小的所有Java程序来复制该问题。这是我的豆子: Shipment.java Activity.java ActivityLocation.java 地址.java 这是我可以正确映射json的代码: 调整var中的数据时,遇到了
我使用RestTemplate。exchange在我的Spring Boot应用程序中获得以下响应: 广告商。java: 广告商java: 但我有以下例外: 我不明白为什么id“1057343”不能反序列化。 你能帮忙吗?提前谢谢
当我在Spring Data REST应用程序中使用Lombok来定义复杂类型时,例如: 使用Spring Data REST控制器,例如: 我遇到了一个可怕的错误: 来自Spring Data REST使用Jackson和Book POST,例如: 当Jackson试图解析本地URI时,会发生反序列化错误,该URI应解析为单个唯一的人。如果我删除我的RepositoryRestControlle
我正在尝试反序列化以下JSON: 我已反序列化文件: 在以下对象结构中: 规则efinition.java 定义。爪哇 和JAVA 我得到了以下错误 我看到问题是因为'and-condition-1'只是一个值,我如何反序列化这些,我想知道我应该写一个自定义反序列化器(或者)有什么解决方法吗?
我正在尝试反序列化以下JSON 在以下自定义反序列化程序的帮助下 进入以下对象结构 我得到以下错误 通用域名格式。fasterxml。杰克逊。数据绑定。exc.MismatchedInputException:无法构造OrderId的实例(尽管至少存在一个创建者):没有从字符串值反序列化的字符串参数构造函数/工厂方法({“type”:“TAKEAWAY”,“data”:{“OrderId”:“AW