使用基于@ResponseBody注释的MappingJackson2JsonView支持在Spring REST中返回JSON响应有什么好处?

我正在阅读本教程 ,发现我们可以通过@ResponseBody Annotation使用MappingJackson2JsonView支持在Spring REST中返回JSON响应。

显然使用@ResponseBody Annotation非常简单,易于实现,因为使用MappingJackson2JsonView支持位复杂。 这是我个人的意见,但我想知道在Spring REST中使用MappingJackson2JsonView支持在@ResponseBody注释中返回JSON响应有什么好处 ,如果有的话? 有人可以解释一下他们之间哪个更好,为什么? 何时使用MappingJackson2JsonView支持以及何时使用@ResponseBody Annotation在Spring REST中返回JSON响应?

我认为,MappingJackson2JsonView是很好的实现。

但ResponseBody有一些优点。 在@ResponseBody的帮助下,您可以返回对象而不是属性。例如

 class Student extends ResponseDTO{ publci String name = "John" } ... @ResponseBody ResponseDTO getStudentInfo(){ return new Student(); } 

结果将是{“name”:“John”}

使用MappingJackson2JsonView,你必须在属性中返回对象

 { "student": { "name":"John" } } 

使用@ResponseBody,您还可以返回内联对象扩展的结果

  @ResponseBody getStudentInfo(){ return new Object(){ public String name="John" }; } 

但这不是很好的实施

一些好的实现MappingJackson2JsonView是好的。 但是对于更多function,如返回对象或返回ResponseDto,ResponseBody更有用

我会说,即使它实现起来有点困难,良好的实现也可以比@ResponseBody更灵活,更强大。 例如:

Jackson2ObjectMapperBuilder提供了一个很好的API来定制各种Jackson设置,同时保留Spring Framework提供的默认设置。 它还允许基于相同的配置创建ObjectMapperXmlMapper实例。

Jackson2ObjectMapperBuilderJackson2ObjectMapperFactoryBean定义了更好的Jackson默认配置。 例如, DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES属性设置为false,以允许使用未映射的属性反序列化JSON对象。

但总的来说,它在某种程度上是自己的观点和经验的问题。