作者:蓶逺訫動_129 | 来源:互联网 | 2023-05-26 15:10
如何解决《JacksonSerializationFeature.WRITE_DATES_AS_TIMESTAMPS在春天没有关闭时间戳》经验,为你挑选了1个好方法。
经过大量的搜索后,我在我的@RestController转换为JSON响应时,跟踪了如何阻止java.util.Date字段被序列化为时间戳.
但是我无法让它发挥作用.我发现的所有帖子都说要禁用Jackson objet映射器的SerializationFeature.WRITE_DATES_AS_TIMESTAMPS功能.所以我写了下面的代码:
public class MVCConfig {
@Autowired
Jackson2ObjectMapperFactoryBean objectMapper;
@PostConstruct
public void postConstruct() {
this.objectMapper.setFeaturesToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
}
}
据我所知,配置也是一个bean,所以在对象映射器中自动连接以设置其他属性应该可行.我使用了断点,这个设置看起来一切都很好.
但是当我在对http查询的响应中使用java.util.Date属性序列化bean时,我仍然得到一个时间戳.
有谁知道为什么这不起作用?这让我很难过!
1> drekka..:
经过大量的搞乱后,我发现以下代码修复了这个问题:
public class MVCConfig extends WebMvcConfigurerAdapter {
@Override
public void extendMessageConverters(List> converters) {
for (HttpMessageConverter> converter : converters) {
if (converter instanceof MappingJackson2HttpMessageConverter) {
MappingJackson2HttpMessageConverter jsOnMessageConverter= (MappingJackson2HttpMessageConverter) converter;
ObjectMapper objectMapper = jsonMessageConverter.getObjectMapper();
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
break;
}
}
}
}
我不确定是否有更简单的方法来访问Jackson MVC消息转换器并进行配置.但这对我有用.
对我来说,在属性文件中添加`spring.jackson.serialization.write-dates-as-timestamps = false`就足够了。