我正在使用Spring Boot(1.2.1),其方式与构建RESTful Web服务教程中的方式类似:
@RestController
公共类事件控制器{
@请求映射(";/events/all";)
事件列表事件(){
返回proxyService.getAllEvents();
}
}
如上所述,SpringMVC隐式地使用Jackson将我的EventList对象序列化为JSON
但我想对JSON格式进行一些简单的自定义,例如:
setSerializationInclusion(JsonInclude.Include.NON_NULL)
问题是,定制隐式JSON映射器的最简单方法是什么?
我在这篇博文中尝试了这种方法,创建了CustomObjectMapper等等,但是第3步,“;在Spring上下文中注册类;,失败:
org.springframework.beans.factory.beancreation异常:
创建名为“jacksonFix”的bean时出错:自动连线依赖项的注入失败;
嵌套异常为org.springframework.beans.factory.BeanCreationException:
无法自动连线方法:public void com.acme.project.JacksonFix.setAnnotationMethodHandlerAdapter(org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter);
嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:
没有[org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter]类型的合格bean
为依赖项找到:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项批注:{}
看起来这些说明适用于较旧版本的SpringMVC,而我正在寻找一种简单的方法来让它与最新的SpringBoot一起工作
您可以通过application.properties配置属性包含和许多其他设置:
spring.jackson.default property include=non\u null
文档中有一个表列出了所有可以使用的属性
如果您想要更多的控制,还可以使用Jackson2ObjectMapperBuilderCustomizerbean以编程方式自定义Spring Boot的配置,如文档中所述:
上下文的
Jackson2ObjectMapperBuilder可以由一个或多个Jackson2ObjectMapperBuilderCustomizerbean自定义。可以订购此类定制器bean(Boot自己的定制器的订单为0),这样就可以在Boot定制之前和之后应用额外的定制
最后,如果您不需要Boot的任何配置,并且希望完全控制ObjectMapper的配置方式,请声明您自己的Jackson2ObjectMapperBuilderbean:
@Bean
Jackson2ObjectMapperBuilder objectMapperBuilder(){
Jackson2ObjectMapperBuilder=新Jackson2ObjectMapperBuilder();
//配置生成器以满足您的需要
返回生成器;
}