使用 Spring RestTemplate 获取 JSON 对象列表

2022-08-31 05:46:27

我有两个问题:

  • 如何使用Spring RestTemplate映射JSON对象列表。
  • 如何映射嵌套的 JSON 对象。

我正在尝试通过遵循 http://spring.io/guides/gs/consuming-rest/ 教程来消耗 https://bitpay.com/api/rates


答案 1

首先定义一个对象来保存数组中返回的实体。例如:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Rate {
    private String name;
    private String code;
    private Double rate;
    // add getters and setters
}

然后,您可以使用该服务并通过以下方式获取强类型列表:

ResponseEntity<List<Rate>> rateResponse =
        restTemplate.exchange("https://bitpay.com/api/rates",
                    HttpMethod.GET, null, new ParameterizedTypeReference<List<Rate>>() {
            });
List<Rate> rates = rateResponse.getBody();

上面的其他解决方案也可以,但我喜欢找回强类型列表而不是Object[]。


答案 2

也许这样...

ResponseEntity<Object[]> responseEntity = restTemplate.getForEntity(urlGETList, Object[].class);
Object[] objects = responseEntity.getBody();
MediaType contentType = responseEntity.getHeaders().getContentType();
HttpStatus statusCode = responseEntity.getStatusCode();

控制器代码RequestMapping

@RequestMapping(value="/Object/getList/", method=RequestMethod.GET)
public @ResponseBody List<Object> findAllObjects() {

    List<Object> objects = new ArrayList<Object>();
    return objects;
}

ResponseEntity是添加状态代码的扩展。也用于方法。在此类中,由 和 返回。HttpEntityHttpStatusRestTemplate@ControllerRestTemplategetForEntity()exchange()


推荐