Obtener lista de objetos JSON con Spring RestTemplate

Resuelto Karudi asked hace 10 años • 15 respuestas

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/ .

Karudi avatar May 15 '14 16:05 Karudi
Aceptado

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 [].

Matt avatar Aug 11 '2015 16:08 Matt

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;
}

ResponseEntityes una extensión de HttpEntityque agrega un HttpStatuscódigo de estado. Utilizado RestTemplatetambién en @Controllermétodos. En RestTemplateesta clase es devuelto por getForEntity()y exchange().

kamokaze avatar May 15 '2014 10:05 kamokaze

Para mi esto funciono

Object[] forNow = template.getForObject("URL", Object[].class);
    searchList= Arrays.asList(forNow);

Donde Objeto es la clase que deseas

yonia avatar Nov 07 '2014 07:11 yonia