千家信息网

Springboot2中如何进行jackson Java8日期格式化处理

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章将为大家详细讲解有关Springboot2中如何进行jackson Java8日期格式化处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。im
千家信息网最后更新 2025年12月02日Springboot2中如何进行jackson Java8日期格式化处理

这篇文章将为大家详细讲解有关Springboot2中如何进行jackson Java8日期格式化处理,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonParser;import com.fasterxml.jackson.databind.*;import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;import org.apache.commons.lang3.StringUtils;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import org.springframework.core.convert.converter.Converter;import org.springframework.lang.NonNull;import java.io.IOException;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.time.format.DateTimeFormatter;import java.util.TimeZone;/** * jackson2 日期序列化和反序列化处理 * */@Configurationpublic class DateConverterConfig {    private static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");    private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");    private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");    /**     * jackson2 json序列化 null字段输出为空串     *     * @return     * @author zhaoyang10     */    @Bean    @Primary    //@ConditionalOnMissingBean(ObjectMapper.class)    public ObjectMapper serializingObjectMapper() {        ObjectMapper objectMapper = new ObjectMapper();                JavaTimeModule javaTimeModule = new JavaTimeModule();        //不再做统一处理 Springcloud2 fegin 会报日期格式化错误 格式化的日期字段直接加@JsonFormat 注解处理        //序列化日期格式        //javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer());        //javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer());        //javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer());        //反序列化日期格式        //javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer());        //javaTimeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer());        //javaTimeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer());        objectMapper.registerModule(javaTimeModule);                        objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);                objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);        objectMapper.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));        return objectMapper;    }    /**     * 日期序列化     */    public class LocalDateTimeSerializer extends JsonSerializer {        @Override        public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {            gen.writeString(value.format(DATETIME_FORMATTER));        }    }    /**     * 日期反序列化     */    public class LocalDateTimeDeserializer extends JsonDeserializer {        @Override        public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {            return LocalDateTime.parse(p.getValueAsString(), DATETIME_FORMATTER);        }    }    /**     * 日期序列化     */    public class LocalDateSerializer extends JsonSerializer {        @Override        public void serialize(LocalDate value, JsonGenerator gen, SerializerProvider serializers) throws IOException {            gen.writeString(value.format(DATE_FORMATTER));        }    }    /**     * 日期反序列化     */    public class LocalDateDeserializer extends JsonDeserializer {        @Override        public LocalDate deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {            return LocalDate.parse(p.getValueAsString(), DATE_FORMATTER);        }    }    /**     * 日期序列化     */    public class LocalTimeSerializer extends JsonSerializer {        @Override        public void serialize(LocalTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {            gen.writeString(value.format(TIME_FORMATTER));        }    }    /**     * 日期反序列化     */    public class LocalTimeDeserializer extends JsonDeserializer {        @Override        public LocalTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {            return LocalTime.parse(p.getValueAsString(), TIME_FORMATTER);        }    }    /**     * 接收前端入参日期的转换处理     *     * @return     */    @Bean    public Converter LocalDateTimeConvert() {        return new Converter() {            @Override            public LocalDateTime convert(@NonNull String source) {                LocalDateTime date = null;                if (StringUtils.isNotBlank(source)) {                    date = LocalDateTime.parse(source, DATETIME_FORMATTER);                }                return date;            }        };    }    @Bean    public Converter LocalDateConvert() {        return new Converter() {            @Override            public LocalDate convert(@NonNull String source) {                LocalDate date = null;                if (StringUtils.isNotBlank(source)) {                    date = LocalDate.parse(source, DATE_FORMATTER);                }                return date;            }        };    }    @Bean    public Converter LocalTimeConvert() {        return new Converter() {            @Override            public LocalTime convert(@NonNull String source) {                LocalTime time = null;                if (StringUtils.isNotBlank(source)) {                    time = LocalTime.parse(source, TIME_FORMATTER);                }                return time;            }        };    }}

关于Springboot2中如何进行jackson Java8日期格式化处理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

日期 序列 格式 处理 内容 字段 文章 更多 知识 篇文章 不错 前端 注解 空串 质量 错误 会报 参考 帮助 有关 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发甲乙双方泄密责任 计算机软件开发代理机构 旅游社一般用的服务器是什么 网络安全设计标准教程 吉林省软件开发招标公告 互联网科技对政府的帮助 绿园区通用网络技术售后服务 日志服务器统一管理网络设备 网络安全防诈图片 河北北斗授时服务器虚拟主机 网络安全用什么语言写简单 数组的内容来自于数据库 我的世界服务器管理员招聘 中国国家图书馆的acs数据库 云顶娱乐软件开发 小米k30i微信无法连接服务器 局域网 dns服务器 access数据库循环体 用友数据库补丁 破解平台数据库 国产服务器操作系统股票 数据库系统工程师证书 旅游社一般用的服务器是什么 学校网络安全专项行动总结 计算机网络安全专业研究生院校 凉山软件开发专业价位 代办网络技术工作室 远程服务器怎么看内存泄漏 证券软件开发论文 央视网消息网络安全稿件
0