我为SpringBoot应用程序配置了自己的ObjectMapper,假设对象映射器如下所示(简化):
@Bean
@Primary
public ObjectMapper objectMapper() {
return new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}
由于ObjectMapper
是一个单例
,所以我的所有REST控制器都使用相同的ObjectMapper。但是,有一些控制器我想忽略空值,但我想保留我的控制器的其余部分来发送空值响应。
有没有配置它的方法?所以最好的结果是我可以这样配置:
除了使用@primary
注释的ObjectMapper
之外,您还可以配置更多的ObjectMapper
使用您选择的bean名称限定的ObjectMapper
。
@Bean
@Primary
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return objectMapper;
}
@Bean("mySpecialObjectMapper")
public ObjectMapper anotherObjectMapper() {
ObjectMapper objectMapper = new ObjectMapper()
/* do some other configuration */;
return objectMapper;
}
然后您可以在控制器中引用它们,如下所示:
@autowired
就会注入主ObjectMapper
.@autowired
和@qualifier(“anyname”)
将注入用@bean(“anyname”)
ObjectMapper
@Autowired
private ObjectMapper objectMapper;
@Autowired
@Qualifier("mySpecialObjectMapper")
private ObjectMapper otherObjectMapper;
因此,在这种情况下,我想配置Spring/Jackson返回{}(2字节)。 我已经考虑过在调用中返回new Object(),否则将返回void,但IMO这是一个肮脏的sout,必须有更好的东西。
我设置了一个类来返回定制的ObjectMapper。据我所知,让spring boot使用这个ObjectMapper的正确方法是将它声明为@primary,它就是这样。 但是,当我从controller方法返回一个对象时,它将使用默认的jackson ObjectMapper配置序列化。 如果我向我的控制器中添加一个显式的ObjectMapper并对其调用writeValueAsString,我
我有一个使用Spring MVC 3.1.3的应用程序和使用Dojo1.4开发的UI。应用程序只有很少的控制器处理通过上传的二进制文件。控制器发送一个json响应,该响应必须用 我实现了web.xml中定义的自定义筛选器: 提前道谢。 更新:我禁用了Spring Security性,并用普通spring mvc进行了测试,但问题仍然存在。我修改了标题和问题描述。
我得到了一个日期字段格式为的对象,我将其映射到一个对象中,如下所示: 现在我需要将这个对象作为json响应发送,但我需要它采用不同的格式: 如果我更改字段,反序列化失败: 如何使用不同的模式进行序列化
我想在我的项目中使用Jackson的配置版本(忽略空值和snake_case,也使用一些自定义模块)。 在我的大型项目中,我无法让Spring MVC真正使用这个映射器。 如果我现在查看调试器中的值,它是。但是如果我让控制器运行,实际的响应是。 当我删除时,它就可以工作了。如何将配置的映射器与MVC一起使用,而不删除Web MVC的其余自动配置?
我的微服务需要通过HTTP与2个不同的服务进行通信。1个与snake_caseJSON有API契约,而另一个使用camelCase。如何配置WebFlux在一组功能endpoint上使用某个Jackson反序列化和序列化JSON,而在不同endpoint上使用另一个? WebFlux文档展示了如何连接另一个ObjectMapper,但这适用于我的API的所有endpoint。所以现在要么我所有的J