Mic*_*eap 9 spring jackson resttemplate
我想使用Spring的RestTemplate和Jackson来使用WebService.我已经按照几个教程进行了创建DAO.这是我获取所有域对象的方法:
// Create a Rest template
RestTemplate restTemplate = new RestTemplate();
// Create a list for the message converters
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
// Add the Jackson Message converter
messageConverters.add(new MappingJacksonHttpMessageConverter());
// Add the message converters to the restTemplate
restTemplate.setMessageConverters(messageConverters);
List<Station> resultList = Arrays.asList(restTemplate.getForObject(BASE_URL, Station[].class));
return resultList;
Run Code Online (Sandbox Code Playgroud)
但是我的Web服务不会立即返回一个Station对象数组,而是以这种方式表达更多语义表达式:
{"success":true,"message":"Records Retrieved Successfully","data":{"totalCount":"14","stations":[{"id":"1264","station":"Station 1","idJefatura":"1","syncDate":"2013-01-24 13:20:43"}, ...] }}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我不知道如何"告诉"RestTemplate在"站点"指示符之后立即解析对象列表,而不创建一个ad hoc对象,这似乎不是正确的解决方案.
有没有办法为RestTemplate指定正确的语法?
编辑:我创建了一个这样的包装器对象:
public class RestResponseObject {
private boolean success;
private String message;
private Data data;
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public class Data {
private int totalCount;
private List<Station> stations;
public int getTotalCount() {
return totalCount;
}
public void setTotalCount(int totalCount) {
this.totalCount = totalCount;
}
public List<Station> getStations() {
return stations;
}
public void setStations(List<Station> estaciones) {
this.stations= estaciones;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我正在努力使这个对象变得通用,因为JSON响应中我的对象列表的键名依赖于该域对象的类.
这里有两种解决方案:
这是一个例子。
响应类
public class MyResponseClass {
// other variables
private List<Station> stations; //it getters and setters
}
Run Code Online (Sandbox Code Playgroud)
在其余客户端中
MyResponseClass response = restTemplate.getForObject(BASE_URL, MyResponseClass.class)
List<Station> resultList = response.getStations()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30257 次 |
| 最近记录: |