【发布时间】:2018-07-13 07:18:55
【问题描述】:
我使用 RestTemplate 调用了一个 api,假设 /getCompany
通常响应如下:-
"Organization":{
"name": "My Company",
"department": {
"id": "1",
"employee": [{
"id": "84",
"name": "abc"
},
{
"id": "85",
"name": "xyz"
}]
}
}
所以我将其解析如下:-
ResponseEntity<Organization> company= new RestTemplate().exchange(new URI(companyUrl),HttpMethod.GET,request, Organization.class);
Organization comp= company.getBody();
Department dept= comp.getDepartment();
Employee[] emp = dept.getEmployees()
但有时在响应中我也会得到以下 json 字符串:
"Organization":{
"name": "My Company",
"department": {
"id": "1",
"employee": {
"id": "84",
"name": "abc"
}
}
}
现在我得到以下异常:-
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of Employee[] out of START_OBJECT token
那么有什么办法可以处理这两种情况吗?
更新:-
根据评论添加以下代码:-
@Bean
public ObjectMapper getObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
return objectMapper;
}
@Bean
public MappingJackson2HttpMessageConverter mappingJacksonHttpMessageConverter(ObjectMapper objectMapper) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(objectMapper);
return converter;
}
但仍然遇到同样的异常。
谢谢,
【问题讨论】:
标签: json rest deserialization resttemplate