java.lang.IllegalArgumentException:找不到类型为:class java.util.ArrayList]的返回值的转换器

时间:2016-06-15 12:17:30

标签: angularjs json spring-mvc arraylist

我在spring mvc4中使用RestController,但我在发送响应时遇到异常。我在这里尝试返回ResponseEntity<List<User>>的{​​{1}}。

List<user>

我有这些依赖项:

  • com.fasterxml.jackson-数据绑定-2.5.3.jar
  • com.fasterxml.jackson-JAXRS碱基2.5.3.jar
  • com.fasterxml.jackson核-2.5.3.jar
  • com.fasterxml.jackson-DATAFORMAT-2.5.3.jar

2 个答案:

答案 0 :(得分:0)

除非有某些特殊原因要使用ResponseEntity,否则我建议将代码更改为:

@RequestMapping(value = "/user", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody List<User> listAllUsers() {
    List<User> users = userService.findAllUsers();
    System.out.println("users.size(): "+users.size());
    if(users.isEmpty()){
        return new ArrayList<User>;//You many decide to return HttpStatus.NOT_FOUND
    }
    return users;
}

看来杰克逊在转换你的列表时遇到了麻烦 - 可能是因为它没有找到适当的转换器到列表的JSON(对JSON的对象列表有一些警告)。

示例:

Spring MVC - How to return simple String as JSON in Rest Controller http://www.beingjavaguys.com/2014/05/json-response-with-responsebody_31.html

答案 1 :(得分:0)

在POM.xml中添加此依赖项

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.1</version>

问题在于这个jar的版本,版本2.8.8也可以。您需要包含此依赖项以覆盖已下载的jar