Obtener lista de objetos JSON con Spring RestTemplate
Tengo dos preguntas:
- Cómo mapear una lista de objetos JSON usando Spring RestTemplate.
- Cómo mapear objetos JSON anidados.
Estoy intentando consumir https://bitpay.com/api/rates , siguiendo el tutorial de http://spring.io/guides/gs/consuming-rest/ .
Primero defina un objeto para contener la entidad que regresa a la matriz.
@JsonIgnoreProperties(ignoreUnknown = true)
public class Rate {
private String name;
private String code;
private Double rate;
// add getters and setters
}
Luego puede consumir el servicio y obtener una lista fuertemente tipada a través de:
ResponseEntity<List<Rate>> rateResponse =
restTemplate.exchange("https://bitpay.com/api/rates",
HttpMethod.GET, null, new ParameterizedTypeReference<List<Rate>>() {
});
List<Rate> rates = rateResponse.getBody();
Las otras soluciones anteriores también funcionarán, pero me gusta recuperar una lista fuertemente tipada en lugar de un Objeto [].
Quizás de esta manera...
ResponseEntity<Object[]> responseEntity = restTemplate.getForEntity(urlGETList, Object[].class);
Object[] objects = responseEntity.getBody();
MediaType contentType = responseEntity.getHeaders().getContentType();
HttpStatus statusCode = responseEntity.getStatusCode();
Código de controlador para elRequestMapping
@RequestMapping(value="/Object/getList/", method=RequestMethod.GET)
public @ResponseBody List<Object> findAllObjects() {
List<Object> objects = new ArrayList<Object>();
return objects;
}
ResponseEntity
es una extensión de HttpEntity
que agrega un HttpStatus
código de estado. Utilizado RestTemplate
también en @Controller
métodos. En RestTemplate
esta clase es devuelto por getForEntity()
y exchange()
.
Para mi esto funciono
Object[] forNow = template.getForObject("URL", Object[].class);
searchList= Arrays.asList(forNow);
Donde Objeto es la clase que deseas