spring处理数据库中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")即可。

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

原文地址:https://www.cnblogs.com/fps2tao/p/13528671.html