Spring Rest 模板 Json 输出映射到对象

Spring Rest Template Json output mapping to Object

当我使用 Spring Rest 模板进行 API 调用时,得到如下 Json 响应

[
  {
    "Employee Name": "xyz123",       
    "Employee Id": "12345"
  }
]

我创建对象来映射 json 响应,如下所示:

public class Test {
    
    @JsonProperty("Employee Name")
    private String employeeName;
    
    @JsonProperty("Employee Id")
    private String employeeId;

}

但是当我休息 api 调用时,我遇到了以下错误:

JSON parse error: Cannot deserialize instance of com.pojo.Emp out of START_ARRAY token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of com.pojo.Emp out of START_ARRAY token\n at [Source: (PushbackInputStream); line: 1, column: 1

当 Json 参数键中有空格时,如何将 Rest 模板 Json 响应映射到对象?

您似乎在尝试将数组映射到对象。你可以这样做

ResponseEntity<Test[]> response =
  restTemplate.getForEntity(
  url,
  Test[].class);
Test[] employees = response.getBody();

更多信息请查看this post

您的 JSON 响应是对象数组,因为它包装在 [] 中,因此将数据映射到 List<Emp>。这里使用 ParameterizedTypeReference 创建了 List<Emp>

的 TypeReference
ResponseEntity<List<Emp>> response = restTemplate.exchange(endpointUrl, 
                                                  HttpMethod.GET,httpEntity,
                                             new ParameterizedTypeReference<List<Emp>>(){}); 
List<Emp> employees = response.getBody();