首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用java- MappingJackson2HttpMessageConverter配置配置

使用java- MappingJackson2HttpMessageConverter配置配置
EN

Stack Overflow用户
提问于 2016-04-28 14:27:34
回答 3查看 13.2K关注 0票数 4

我正在尝试配置MappingJackson2HttpMessageConverter,因为我想禁用WRITE_DATES_TO_TIMESTAMP功能。

如果我通过xml-configuration来配置它,它会成功工作

代码语言:javascript
复制
<bean name="jacksonObjectMapper"
    class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
    <property name="featuresToDisable">
        <array>
            <util:constant
                static-field="com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS" />
        </array>
    </property>
</bean>
<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean
            class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper" ref="jacksonObjectMapper" />
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

但是,当我尝试通过java-configuration进行配置时,转换器被注册了,但是序列化忽略了映射器的配置。

我尝试过不同的方法。

方法1

代码语言:javascript
复制
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    ObjectMapper mapper = new ObjectMapper();
    mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    converters.add(new MappingJackson2HttpMessageConverter(mapper));
}
}

方法2

代码语言:javascript
复制
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
    for (HttpMessageConverter<?> converter : converters) {
        if (converter instanceof MappingJackson2HttpMessageConverter) {
        MappingJackson2HttpMessageConverter jacksonMessageConverter = (MappingJackson2HttpMessageConverter) converter;
        ObjectMapper objectMapper = jacksonMessageConverter.getObjectMapper();
        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        break;
        }
    }
}

}
EN

回答 3

Stack Overflow用户

发布于 2016-04-28 14:30:07

尝试以下方法:

代码语言:javascript
复制
@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    ...
    @Override
    public void configureMessageConverters(
        List<HttpMessageConverter<?>> converters) {
        Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
        builder.dateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm"));
        builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
        converters.add(new MappingJackson2HttpMessageConverter(builder.build()));
    }
    ...
}
票数 5
EN

Stack Overflow用户

发布于 2016-04-28 15:08:05

这也适用于我

代码语言:javascript
复制
@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
    Jackson2ObjectMapperBuilder builder = new Jackson2ObjectMapperBuilder();
    builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
    return builder;
}
票数 0
EN

Stack Overflow用户

发布于 2017-01-23 14:14:35

也许您在xml中仍然有注释驱动?

它还注册默认的messageConverters和对象映射器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36906877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档