如何在Rest模板中传递List <object>?

时间:2017-07-22 12:26:02

标签: spring list rest resttemplate

我需要编写一个客户端代码来调用webservice中的方法,这是我的客户端代码。

@HystrixCommand
public List<Location> saveLocation (List<LocationDTO> locationDTO) {    

HttpEntity<List<LocationDTO>> httpEntity = new HttpEntity<>(locationDTO);        
ResponseEntity<List<Location>> response = 
restTemplate.exchange(locationProperties.getBaseURL(),HttpMethod.POST,
httpEntity,new ParameterizedTypeReference<List<Location>>() {   
});
return getResponseBody(response);
}

我为此编写了Junit来测试这段代码。

@Test
public void saveLocationTest() throws Exception {

List<LocationDTO>  locationList = new ArrayList<>();
LocationDTO locationDTO = new LocationDTO();
locationList.add(locationDTO);
Location location = new Location();
location.setLocationID(100);
mockServer.expect(requestTo(baseURL)).andExpect(method(HttpMethod.POST))
.andRespond(withSuccess("{\"locationID\":100}",MediaType.APPLICATION_JSON));    
List<Location> response = locationClient.saveLocation(locationList);    
assertEquals(response, location);
}

但是当我运行Junit时出现以下错误,这也意味着我的客户端代码错误。

  

引起:com.fasterxml.jackson.databind.JsonMappingException:无法&gt;从START_OBJECT令牌反序列化java.util.ArrayList的实例   在[来源:java.io.ByteArrayInputStream@175b9425; line:1,column:1]

如果我只是传递LocationDTO而不是List&lt; LocationDTO&gt;,那么Rest模板和junit可以正常工作。有人可以帮我这个吗?

0 个答案:

没有答案