问题
我有两个问题:
- 如何使用Spring RestTemplate映射JSON对象列表。
- 如何映射嵌套的JSON对象。
我试图通过遵循http://spring.io/guides/gs/consuming-rest/的教程来消费https://bitpay.com/api/rates。
#1 热门回答(243 赞)
首先定义一个对象来保持实体返回数组...例如
@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 热门回答(160 赞)
也许这样......
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
的扩展,增加了aHttpStatus
status代码。用于RestTemplate
和well@Controller
方法。在RestTemplate
这个班级由getForEntity()
和exchange()
返回。
#3 热门回答(59 赞)
对我来说这很有效
Object[] forNow = template.getForObject("URL", Object[].class);
searchList= Arrays.asList(forNow);
Object是你想要的类