Get list of JSON objects with Spring RestTemplate
I have two questions:
- How to map a list of JSON objects using Spring RestTemplate.
- How to map nested JSON objects.
I am trying to consume https://bitpay.com/api/rates, by following the tutorial from http://spring.io/guides/gs/consuming-rest/.
First define an object to hold the entity coming back in the array.. e.g.
@JsonIgnoreProperties(ignoreUnknown = true)
public class Rate {
private String name;
private String code;
private Double rate;
// add getters and setters
}
Then you can consume the service and get a strongly typed list via:
ResponseEntity<List<Rate>> rateResponse =
restTemplate.exchange("https://bitpay.com/api/rates",
HttpMethod.GET, null, new ParameterizedTypeReference<List<Rate>>() {
});
List<Rate> rates = rateResponse.getBody();
The other solutions above will also work, but I like getting a strongly typed list back instead of an Object[].
Maybe this way...
ResponseEntity<Object[]> responseEntity = restTemplate.getForEntity(urlGETList, Object[].class);
Object[] objects = responseEntity.getBody();
MediaType contentType = responseEntity.getHeaders().getContentType();
HttpStatus statusCode = responseEntity.getStatusCode();
Controller code for the RequestMapping
@RequestMapping(value="/Object/getList/", method=RequestMethod.GET)
public @ResponseBody List<Object> findAllObjects() {
List<Object> objects = new ArrayList<Object>();
return objects;
}
ResponseEntity
is an extension of HttpEntity
that adds a HttpStatus
status code. Used in RestTemplate
as well @Controller
methods.
In RestTemplate
this class is returned by getForEntity()
and exchange()
.
For me this worked
Object[] forNow = template.getForObject("URL", Object[].class);
searchList= Arrays.asList(forNow);
Where Object is the class you want