[英]How to parse response to POJO with this response body
春天和一切的新手。 嘗試命中端點並在響應字段中檢索信息。 但是我不知道如何獲取信息而不是僅僅返回整個響應,因為它不嵌套在鍵/值中?
我正在使用rest模板+ MappingJacksonHttpMessageConverter
。 我想將信息映射到響應pojo中,只是不確定如何進行進一步操作,或者不確定我是否在正確的方向上。 下面的示例代碼。
郵遞員回應:
{
"success": true,
"message": "Success",
"body": {
"response": "TopStatus=Completed,TopRanking=4 - reqs met, TopDate=2014-04-23,TopTime=11:00 AM,TopEndTime=1:30 AM"
},
"status": 200
}
試圖映射到Pojo的方法
public TopStatus getTopAppStatus(int topId, Status status) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HashMap<String, String> statusObj = new HashMap<String, String>();
statusObj.put("topStatus", "Fail");
statusObj.put("topId", "93");
RestTemplate rt = getRestTemplate();
URI uri = new URI("urihere");
HttpEntity<HashMap> entity = new HttpEntity<HashMap>(statusObj, headers);
TopStatus response = rt.postForObject(uri, entity, TopStatus.class);
return response;
}
我如何設置的Pojo示例
@JsonIgnoreProperties(ignoreUnknown = true)
public class TopStatus{
@JsonProperty("TopStatus")
private String topStatus;
rest of fields, setters, getters etc...
}
您可以使用postForEntity()方法返回ResponseEntity類型的對象,而不是postForObject()
您需要進行一些小的更改,以將響應主體映射到POJO
ResponseEntity<TopStatus> response = rt.postForEntity(uri, entity, TopStatus.class);
TopStatus topStatusResponse = response.getBody();
return topStatusResponse;
這應該僅返回預期的POJO。
嘗試使用下面的代碼。
public TopStatus getTopAppStatus(int topId, Status status) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
TopStatus model = new TopStatus();
model.setTopStatus("Fail");
model.setTopId("93");
RestTemplate rt = getRestTemplate();
URI uri = new URI("urihere");
HttpEntity<> entity = new HttpEntity<HashMap>(model, headers);
TopStatus response = rt.postForObject(uri, entity, TopStatus.class);
return response;
}
修改后的代碼。
public TopStatus getTopAppStatus(int topId, Status status) {
RestTemplate restTemplate = new RestTemplate();
// Add the Jackson message converter
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
// create request body
//Here your TopStatus object converted to json. you can use Jackson to do this.
String input = "{\"topStatus\":\"Fail\",\"topId\":\"93\"}";
// set headers
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>(input, headers);
URI uri = new URI("urihere");
ResponseEntity<TopStatus> response = restTemplate
.exchange(uri, HttpMethod.POST, entity, TopStatus.class);
return response;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.