MappingJackson2HttpMessageConverter注意事项

本文介绍了两种在Spring框架中处理数据库Date类型字段转换为时间戳的方法:一是通过自定义注解进行局部修改;二是强烈推荐的全局配置方式,即通过MappingJackson2HttpMessageConverter进行配置。同时提供了适用于SpringMVC和SpringBoot的具体实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

处理数据库中Date类型字段转换成时间戳问题

有两种方式可以解决日期转换Json问题:

1、(不推荐)局部修改,自定义注解进行将日期类型转换为Date类型。

2、(强烈推荐)全局修改,用MappingJackson2HttpMessageConverter配置在XML(SpringMVC)或者配置在Application.Java启动类(Spring boot、Spring cloud)。

配置在Application.Java启动类(Spring boot、Spring cloud):

@Bean
    public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
    	MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
    	//设置日期格式
    	ObjectMapper objectMapper = new ObjectMapper();
    	SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd");
    	objectMapper.setDateFormat(smt);
    	mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
    	//设置中文编码格式
    	List<MediaType> list = new ArrayList<MediaType>();
    	list.add(MediaType.APPLICATION_JSON_UTF8);
    	mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
    	return mappingJackson2HttpMessageConverter;
    }

配置在XML(SpringMVC):

<mvc:annotation-driven>  
    <mvc:message-converters>  
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
    		<property name="objectMapper" ref="customObjectMapper"/>
        </bean>  
    </mvc:message-converters>  
</mvc:annotation-driven> 

自定义objectMapper:

public class CustomObjectMapper extends ObjectMapper {    
    
    public CustomObjectMapper() {    
        CustomSerializerFactory factory = new CustomSerializerFactory();    
        factory.addGenericMapping(Date.class, new JsonSerializer<Date>() {    
            @Override    
            public void serialize(Date value, JsonGenerator jsonGenerator,    
                    SerializerProvider provider) throws IOException, JsonProcessingException {    
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    
                jsonGenerator.writeString(sdf.format(value));    
            }    
        });    
        this.setSerializerFactory(factory);    
    }    
}

注意:如果想要单个bean的某个日期字段显示年月日时分秒的话,只需要在对应日期的get方法上添加@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")即可。

设置对值为null的处理

MappingJackson2HttpMessageConverter设置对值为null的处理

转载于:https://my.oschina.net/u/3672057/blog/1844715

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值