我正在使用 Spring Boot (1.2.1),其方式与他们在 构建 RESTful Web 服务 教程中的方式类似:
@RestController
public class EventController {
@RequestMapping("/events/all")
EventList events() {
return proxyService.getAllEvents();
}
}
因此,在上面,Spring MVC 隐式使用 Jackson 将我的 EventList
对象序列化为 JSON。
但我想对 JSON 格式做一些简单的定制,例如:
setSerializationInclusion(JsonInclude.Include.NON_NULL)
问题是, 自定义隐式 JSON 映射器的最简单方法是什么?
我尝试了 这篇博 文中的方法,创建了一个 CustomObjectMapper 等等,但是第 3 步“在 Spring 上下文中注册类”失败了:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'jacksonFix': Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire method: public void com.acme.project.JacksonFix.setAnnotationMethodHandlerAdapter(org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter);
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type [org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter]
found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
看起来这些说明适用于旧版本的 Spring MVC,而我正在寻找一种简单的方法来让它与最新的 Spring Boot 一起工作。
原文由 Jonik 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过
application.properties
配置属性包含和许多其他设置:文档 中有一个表格列出了所有可以使用的属性。
如果您想要更多控制,您还可以使用
Jackson2ObjectMapperBuilderCustomizer
bean 以编程方式自定义 Spring Boot 的配置,如 文档 中所述:最后,如果您不想要 Boot 的任何配置,并且想要完全控制
ObjectMapper
的配置方式,请声明您自己的Jackson2ObjectMapperBuilder
bean: