Mar*_*arc 73 java spring jackson spring-boot
有了这段代码
@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
public ResponseEntity<foo> foo() {
Foo model;
...
return ResponseEntity.ok(model);
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下异常
java.lang.IllegalArgumentException: No converter found for return value of type
Run Code Online (Sandbox Code Playgroud)
我的猜测是,由于杰克逊失踪,该对象无法转换为JSON.我不明白为什么,因为我认为杰克逊是用春季靴子建造的.
然后我试图将Jackson添加到pom.xml但我仍然有同样的错误
<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>
Run Code Online (Sandbox Code Playgroud)
我是否必须更改任何弹簧启动属性才能使其正常工作?
谢谢
Mar*_*arc 212
问题是Foo中的一个嵌套对象没有任何嵌套对象 getter/setter
PAA*_*PAA 18
将以下依赖项添加到您的pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
使用@ResponseBody
和getter/setter
.希望它能解决你的问题.
@RequestMapping(value = "/bar/foo", method = RequestMethod.GET)
@ResponseBody
public ResponseEntity<foo> foo() {
Run Code Online (Sandbox Code Playgroud)
并更新你的mvc-dispatcher-servlet.xml
:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
</mvc:message-converters>
</mvc:annotation-driven>
Run Code Online (Sandbox Code Playgroud)
这个问题发生在我的例子中,因为 spring 框架无法获取嵌套对象的属性。Getters/Setters 是一种解决方法。公开属性是另一种快速而肮脏的解决方案,以验证这是否确实是问题所在。
配置类上的 @EnableWebMvc 注释解决了我的问题。(Spring 5,无web.xml,由AbstractAnnotationConfigDispatcherServletInitializer初始化)
归档时间: |
|
查看次数: |
82361 次 |
最近记录: |