【发布时间】:2018-12-07 13:27:28
【问题描述】:
我想获得 Spring 5 创建、配置和使用的 ObjectMapper(或映射器)来序列化和反序列化我的 Rest 资源上的数据交换(即在其上调用 readerForUpdating() 或提供进一步的配置,例如添加混合)。
我尝试了this question 中提出的解决方案,但没有一个奏效:我没有使用 Spring Boot,ObjectMapper 或 MappingJackson2HttpMessageConverter 都不能是 @Autowired。
特别是,我尝试从 MappingJackson2HttpMessageConverter 重新配置 ObjectMapper:
@EnableWebMvc
@Configuration
@EnableSwagger2
@ComponentScan(basePackages=...)
public class WebappConfig implements WebMvcConfigurer {
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
// ...
for(HttpMessageConverter<?> c : converters) {
if(c instanceof MappingJackson2HttpMessageConverter) {
ObjectMapper o = ((MappingJackson2HttpMessageConverter) c).getObjectMapper();
//o.configure(SerializationFeature.INDENT_OUTPUT, true);
o.addMixIn(WorkStamp.class, WorkStampApi.class);
}
}
//...
}
}
但这也不起作用,因为 mixin 从序列化对象中删除了一个字段,但生成的 JSON 仍然具有该字段。
【问题讨论】: