引入:
前端頁面請求一般需要後端返回相應的json數據,以往使用@Controller時一般都是使用視圖解析器直接進行頁面跳轉,而如果有需求需要Controller直接返回json數據格式時,一般使用@RestController註解控制器,它的作用相當於@ResponseBody+@@Controller,意思是直接返回數據。但是SpringMVC不能直接使用@RestController返回一個列表數據時,它不會自動給你轉換json,會報錯(直接返回一個字符串可以)
- 後端代碼:
@RestController
public class TestController {
@Autowired
private UserService userService;
@GetMapping("/test")
public List<User> test(){
return userService.findAll();
}
}
- 測試結果:
解決:
由上面的錯誤提示可以看到,@RestController返回一個列表數據需要一個轉換器,這裏使用的是一個jackson的解析包,它可以對@RestController返回的數據列表解析成json數據格式。其實並不限定使用這個解析包,還有其他的解決方法,如果有知道的小夥伴,在留言區交流下
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
注意:如果你加了上面的依賴返回數據仍然報一下錯誤
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException
則表明你的spring和jackson相關版本不兼容
我使用的是Spring5.0.2版本,所以需要使用是高版本的jsckson
如果你使用的是Spring4則需要更換jackson版本嘗試,一般爲2.7.5或更高版本試試
- 驗證: