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();
当我使用 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 ofcom.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>
ResponseEntity<List<Emp>> response = restTemplate.exchange(endpointUrl,
HttpMethod.GET,httpEntity,
new ParameterizedTypeReference<List<Emp>>(){});
List<Emp> employees = response.getBody();