如何使用@ResponseBody从Spring Controller返回JSON数据

Spring版本4.2.0,Hibernate 4.1.4这里是我的Controllerfunction:

 @RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET) @ResponseBody public List<Company> listforCompanies() { List<Company> listOfCompanies= new ArrayList<Company>(); listOfCompanies = companyManager.getAllCompanies(); return listOfCompanies; } 

jacksonJSON映射器依赖Pom.xml

  <!-- Jackson JSON Mapper --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>${jackson.version}</version> </dependency> 

获取我的ArrayList的列表,但是当返回以下错误时显示:

 SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [/IrApp] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList] with root cause java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList at org.springframework.util.Assert.isTrue(Assert.java:68) at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:124) 

链接到我正在关注的示例。

将下面的依赖项添加到你的pom.xml中:

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

我面临同样的问题。 自从我使用@RestController以来,我没有放置@RestController 。 但是我仍然因为没有为公司类getter/setter方法而出错。 所以在把getter/setter我的问题就解决了。

您还需要确保返回的bean不是空的(并且可以由Jackson序列化)。 在我的特殊情况下,我试图返回一个没有getter和setter的对象的实例,没有任何jackson的注解和字段等于null。 我有下面的消息:

 com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class com.foo.bar.Baz and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) ) 

当我面对这个问题时,我只是简单地把getter setter方法和我的问题解决了。

我正在使用Spring启动版本2.0。

考虑@Arpit的答案,对我来说,它只有当我添加两个jackson依赖项:

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

并configuration了原因web.xml <mvc:annotation-driven/>

帮助我的原始答案在这里: https : //stackoverflow.com/a/33896080/3014866

在我的情况下,我正在使用jackson-databind-2.8.8.jarJDK 1.6不兼容我需要使用,所以spring没有加载这个转换器。 我降级了这个版本,现在可以工作了。