SpringMVC使用@RestController注解返回Json的处理方式

引入:

       前端页面请求一般需要后端返回相应的json数据,以往使用@Controller时一般都是使用视图解析器直接进行页面跳转,而如果有需求需要Controller直接返回json数据格式时,一般使用@RestController注解控制器,它的作用相当于@ResponseBody+@@Controller,意思是直接返回数据。但是SpringMVC不能直接使用@RestController返回一个列表数据时,它不会自动给你转换json,会报错(直接返回一个字符串可以)

  • 后端代码:
@RestController
public class TestController {

    @Autowired
    private UserService userService;

    @GetMapping("/test")
    public List test(){

        return userService.findAll();
    }
}
  • 测试结果: 

SpringMVC使用@RestController注解返回Json的处理方式_第1张图片

解决:

     由上面的错误提示可以看到,@RestController返回一个列表数据需要一个转换器,这里使用的是一个jackson的解析包,它可以对@RestController返回的数据列表解析成json数据格式。其实并不限定使用这个解析包,还有其他的解决方法,如果有知道的小伙伴,在留言区交流下


      com.fasterxml.jackson.core
      jackson-databind
      2.9.5
    

注意:如果你加了上面的依赖返回数据仍然报一下错误

java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/exc/InvalidDefinitionException

则表明你的spring和jackson相关版本不兼容

我使用的是Spring5.0.2版本,所以需要使用是高版本的jsckson

如果你使用的是Spring4则需要更换jackson版本尝试,一般为2.7.5或更高版本试试

  • 验证:

你可能感兴趣的:(SpringMVC)