Reputation: 147
I'm using Resttemplate class
to get all User
object. But when i run Main in Client then occur error, please let me know how fix it ???
Exception in thread "main" org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not deserialize instance of edu.java.spring.service.user.model.User out of START_ARRAY token at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@7d70d1b1; line: 1, column: 1]; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of edu.java.spring.service.user.model.User out of START_ARRAY token at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@7d70d1b1; line: 1, column: 1] at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.readJavaType(MappingJackson2HttpMessageConverter.java:228) at org.springframework.http.converter.json.MappingJackson2HttpMessageConverter.read(MappingJackson2HttpMessageConverter.java:220) at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:95) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:549) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:502) at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:239) at edu.java.spring.service.client.RestClientTest.getUsers(RestClientTest.java:57) at edu.java.spring.service.client.RestClientTest.main(RestClientTest.java:40) Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of edu.java.spring.service.user.model.User out of START_ARRAY token at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@7d70d1b1; line: 1, column: 1]
Here file RestClientTest.java
public class RestClientTest {
public static void main(String[] args) throws IOException{
List<User> users = getUsers();
for (int i = 0; i < users.size(); i++) {
System.out.println("Rest Response" + loadUser(users.get(i).getUserName()));
}
}
public static List<User> getUsers(){
String uri = new String("http://localhost:8080/rest/user/list");
RestTemplate rt = new RestTemplate();
return (List<User>) rt.getForObject(uri,User.class);
}
Here file UserRestServiceController.java
@Controller
public class UserRestServiceController {
@Autowired
public UserDao userDao;
@RequestMapping(value = "/rest/user/list", produces = MediaType.APPLICATION_JSON_VALUE,method = RequestMethod.GET)
public @ResponseBody List<User> getUsers(){
return userDao.listUsers();
}
Upvotes: 0
Views: 855
Reputation: 33
I think the rest method is sending you back the List<User>
objects but you are trying to parse it using User.class
in following code : rt.getForObject(uri,User.class);
. Try something like rt.getForObject(uri,List.class);
.
Upvotes: 3