为了账号安全,请及时绑定邮箱和手机立即绑定

使用Spring RestTemplate获取JSON对象的列表

/ 猿问

使用Spring RestTemplate获取JSON对象的列表

收到一只叮咚 2019-11-05 16:20:06

我有两个问题:


如何使用Spring RestTemplate映射JSON对象列表。

如何映射嵌套的JSON对象。

我通过遵循http://spring.io/guides/gs/using-rest/中的教程,尝试使用https://bitpay.com/api/rates。


查看完整描述

3 回答

?
弑天下

也许这样


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是对扩展名的HttpEntity添加HttpStatus状态代码。使用RestTemplate以及@Controller方法。在RestTemplate此类中,由getForEntity()和返回exchange()。


查看完整回答
反对 回复 2019-11-05
?
当年话下

首先定义一个对象来保存实体回到数组中。


@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 []。


查看完整回答
反对 回复 2019-11-05
?
临摹微笑

经过多次测试,这是我发现的最佳方法:)


Set<User> test = httpService.get(url).toResponseSet(User[].class);

所有你需要的


public <T> Set<T> toResponseSet(Class<T[]> setType) {

    HttpEntity<?> body = new HttpEntity<>(objectBody, headers);

    ResponseEntity<T[]> response = template.exchange(url, method, body, setType);

    return Sets.newHashSet(response.getBody());

}


查看完整回答
反对 回复 2019-11-05

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信