![](/img/trans.png)
[英]How to deserialize Spring's ResponseEntity with Jackson ObjectMapper (probably with using @JsonCreator and Jackson mixins)
[英]How to handle various responses with Jackson ObjectMapper and Spring's RestTemplate?
我正在使用Spring的RestTemplate和Jackson ObjectMapper使用REST服務。 問題是如果有錯誤,則返回的JSON與我期望的對象完全不同,因此失敗。 另外,我什至不能使用String.class,因為這會引發類似的錯誤。 我什至不知道響應是什么樣的,因為實際的請求引發了異常,因此我從沒有得到能夠檢查的響應。
這是一些代碼:
String url = BASE_URL + USER_LOGIN_URL;
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> postData = new LinkedMultiValueMap<String, String>();
// Postdata added here
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(postData, headers);
UserInfo userInfo = restTemplate.postForObject(url, entity, UserInfo.class); // Doesn't work if not UserInfo
// ** OR THE FOLLOWING **
String response = restTemplate.postForObject(url, entity, String.class);
logger.debug(response); // Never reaches here because ObjectMapper seems to expect a JSON object named "String"
UserInfo userInfo = objectMapper.readValue(response, UserInfo.class);
我認為RestTemplate
使用DefaultResponseErrorHandler
來處理錯誤響應(以4或5開頭的代碼)。 拋出的實例HttpStatusCodeException
與方法getResponseBodyAsString()
因此,您可以捕獲該異常並將響應提取為字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.