java-如何使用@ResponseBody从Spring Controller返回JSON数据
春季版本4.2.0,休眠4.1.4这是我的ArrayList
函数:
@RequestMapping(value = "/mobile/getcomp", method = RequestMethod.GET)
@ResponseBody
public List<Company> listforCompanies() {
List<Company> listOfCompanies= new ArrayList<Company>();
listOfCompanies = companyManager.getAllCompanies();
return listOfCompanies;
}
ArrayList
中的Jackson映射器依赖关系:
<!-- 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)
链接到我正在关注的示例。
Zahid Khan asked 2020-02-29T10:24:28Z
7个解决方案
102 votes
将以下依赖项添加到pom.xml中:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version>
</dependency>
87 votes
我面临着同样的问题。 我没有使用@ResponseBody
,因为我正在使用@RestController
。但是仍然出现错误,因为我没有将getter/setter
方法用于Company类。 因此,在放入getter/setter
之后,我的问题得以解决。
9 votes
您还需要确保返回的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) )
6 votes
当我面对这个问题时,我只使用了getter setter方法,问题就解决了。
我正在使用Spring Boot版本2.0。
4 votes
考虑到@Arpit答案,对我来说,它仅在添加两个杰克逊依赖项时起作用:
<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>
并配置了web.xml <mvc:annotation-driven/>
。
帮助我的原始答案在这里:[https://stackoverflow.com/a/33896080/3014866]
1 votes
我正在使用groovy + springboot并收到此错误。
如果我们使用下面的依赖关系,那么添加getter / setter就足够了。
implementation 'org.springframework.boot:spring-boot-starter-web'
随着Jackson核心课程随之而来。
0 votes
就我而言,我使用的是与我需要使用的JDK 1.6
不兼容的jackson-databind-2.8.8.jar
,因此Spring并未加载此转换器。 我降级了版本,现在可以使用了。